我正在读取结果中的一些值列表,但我不确定我哪里出错了,我不知道数组大小所以我不能给它分配任何值
string[] result = null;
while (reader.Read())
{
result = Convert.ToString[](reader["RoleID"]);
}
reader.Close();
我得到了:Syntax error; value expected
。
获取结果值后,如何将结果中的值与字符串进行比较?例如,我想检查字符串check="Can send message";
是否存在于结果数组中。我怎么能这样做?
答案 0 :(得分:3)
您的代码在语法错误,因此错误。但是,当您必须构建项目集合但事先不知道大小时,您希望使用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
}
答案 1 :(得分:1)
我更喜欢使用ArrayList
var result= new ArrayList();
while (reader.Read())
{
result.Add(Convert.ToString[](reader["RoleID"]));
}reader.Close();
答案 2 :(得分:0)
您应该使用如下列表:
var results = new List<string>();
while( reader.Read() ){
results.Add(reader["RoleID"].ToString());
}
然后,您将遍历集合中的所有字符串,并使用foreach语句检查它们:
foreach(var result in results) {
if(result == "check") {
// do something
}
}
答案 3 :(得分:0)
如果需要,Anthony Pegram的例子中的列表可以很容易地转换为数组。
string[] result = results.ToArray();