使用linq将数据表转换为array []时出错

时间:2017-04-24 12:36:45

标签: c# arrays linq

我正在尝试使用linq从datatable转换为array [],然后使用string.join将该数组连接到一个字符串中。

以下是代码:

string.Join("','", dt
  .Select("IsCount = '1'")
  .OfType<DataRow>()
  .Select(dr => dr.Field<string>(0))
  .ToArray())

但它给出的错误如下:

  

表达式不能包含lambda表达式

1 个答案:

答案 0 :(得分:0)

错误的原因是您将bool列与字符串"1"进行比较。这在DataTable.Select中无效。您可以在DataColumn.Expression中查看语法的工作原理及其支持的内容:

  

布尔文字是真和假;他们没有被引用   表达式。

所以这会奏效:

string result = string.Join("','", dt
  .Select("IsCount = true")
  .Cast<DataRow>()
  .Select(dr => dr.Field<string>(0))); // no need for ToArray with NET 4 

但是,为什么不使用LINQ而不是奇怪的旧Select语法?

string result = string.Join("','", dt.AsEnumerable()
  .Where(row => row.Field<bool>("IsCount"))
  .Select(row => row.Field<string>(0)));