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

本文关键字:读取 存储 数据 数组 何读取 字符串 | 更新日期: 2023-09-27 18:13:23

我正在阅读一些值的结果列表,但我不确定我在哪里出错,我不知道数组的大小,所以我不能分配任何值给它

string[] result = null;
while (reader.Read())
{
    result = Convert.ToString[](reader["RoleID"]);
}
reader.Close();

我得到:Syntax error; value expected .

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

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

您的代码在语法上是错误的,因此出现错误。但是,当你必须构建一个项目集合,但你不知道事先的大小,你想要使用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
}

我更喜欢使用ArrayList

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

你应该像这样使用列表:

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

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

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

如果需要,Anthony Pegram示例中的列表可以很容易地转换为数组。

string[] result = results.ToArray();