我正在尝试使用linq从datatable转换为array [],然后使用string.join将该数组连接到一个字符串中。
以下是代码:
string.Join("','", dt
.Select("IsCount = '1'")
.OfType<DataRow>()
.Select(dr => dr.Field<string>(0))
.ToArray())
但它给出的错误如下:
表达式不能包含lambda表达式
答案 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)));