【发布时间】:2019-05-10 20:44:42
【问题描述】:
我试图避免 for 循环并使用 LINQ 而不是 for 循环。任何帮助将不胜感激。我一直在尝试使用 dt.select (a=>...) 但它总是抛出错误“无法将 lambda 表达式转换为类型字符串,因为它不是委托类型”。
AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
cn = new SqlConnection("Data Source=.;Initial Catalog=XYX;Integrated
Security=True");
da = new SqlDataAdapter("select UserName from ServiceProviders order
by UserName asc", cn);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
coll.Add(dt.Rows[i]["UserName"].ToString());
}
}
【问题讨论】:
-
所以你想遍历每一行并将用户名字段添加到 coll 集合中?你想在没有循环的情况下做一个循环吗?
-
我想这是你需要的小费stackoverflow.com/questions/4974159/…
-
LINQ 只有在
coll的类型为 List 时才有意义,因为它的 AddRange 方法采用 IEnumerable,这是 LINQ 的基本数据结构。在这种情况下,您的循环(以及周围的 if 块)可以替换为coll.AddRange(dt.Rows.Select(row => row["UserName"].ToString()));。但正如霍根所说,在他的解决方案中也会发生同样的情况。 -
得到错误,dt,rows 不包含 Select 的定义。
标签: c# linq autocomplete