如何使用数据读取器读取字符串值并将其存储在数组中

Posted

技术标签:

【中文标题】如何使用数据读取器读取字符串值并将其存储在数组中【英文标题】:How can I read string value and store it in a array using data reader 【发布时间】:2011-11-02 16:47:18 【问题描述】:

我正在读取结果中的一些值列表,但我不确定我哪里出错了,我不知道数组大小,所以我无法为其分配任何值

string[] result = null;
while (reader.Read())

    result = Convert.ToString[](reader["RoleID"]);

reader.Close();

我收到:Syntax error; value expected

得到结果值后,如何将结果中的值与字符串进行比较?例如,我想检查字符串 check="Can send message"; 是否存在于结果数组中。我该怎么做?

【问题讨论】:

你没有提供足够的信息让任何人给你一个实际的答案。首先,您的语法是错误的,您正在遍历阅读器,试图将每个值转换为结果数组?根据您要完成的任务,可能会有更好的方法来做到这一点。 【参考方案1】:

您的代码在语法上是错误的,因此是错误的。但是,当您必须构建项目集合但事先不知道大小时,您希望使用List<T> 而不是数组。该列表将允许您继续添加项目。

var results = new List<string>();
while (reader.Read())

    results.Add(reader["RoleID"].ToString());


// results now holds all of the RoleID values in the reader 

您可以像数组一样通过索引访问列表的元素,如果需要,可以使用 Linq(也像数组)查询列表。

string check = "something";
if (results.Any(item => item.Equals(check)))

    // results contains the value in check 


// or use all items that equal check
foreach (var item in results.Where(obj => obj.Equals(check))

    // do something with each item that equals check

【讨论】:

如何将其与字符串进行比较,我想将结果与字符串进行比较 check="Something" 答案已更新以显示使用 Linq 的各种查询技术。 (可以通过显式循环执行相同类型的逻辑。)【参考方案2】:

我更喜欢使用ArrayList

var result= new ArrayList();
while (reader.Read())
        
            result.Add(Convert.ToString[](reader["RoleID"]));
        reader.Close();

【讨论】:

如果不绑定到 .NET 1.x / C# 1.x,几乎没有理由使用 ArrayList。对于 .NET / C# 2.0 或更高版本,List&lt;T&gt; 是首选。 我必须支持@huMpty duMpty。尽管它可能不是最佳选择,但使用 ArrayList 肯定更容易(无论如何,从初学者的角度来看)。【参考方案3】:

您应该使用如下列表:

var results = new List<string>();
while( reader.Read() )
    results.Add(reader["RoleID"].ToString());

然后您将遍历集合中的所有字符串并使用 foreach 语句检查它们:

foreach(var result in results) 
    if(result == "check") 
        // do something
    

【讨论】:

【参考方案4】:

如果需要,Anthony Pegram 示例中的列表可以轻松转换为数组。

string[] result = results.ToArray();

【讨论】:

以上是关于如何使用数据读取器读取字符串值并将其存储在数组中的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 sys.exit() 返回的值并将其存储在变量中

我如何在闭包之外访问数组?

读取 CSV 文件并将值存储到数组中

读取文本文件行并将 x 和 y 值存储在数组中(NodeJS)

如何使用 setfill 和 setw 在字符串变量中存储十六进制值

读取单词并将它们存储到数组中