0

我想在 A 列 =“123”找到的第一行中获取 B 列的值。

我试过:

dataTable.AsEnumerable().Select(row => row["value"].ToString() == "123").ToString();

但我得到Expression cannot contain lambda expressions

任何帮助将不胜感激,谢谢。

编辑:

我基本上是在寻找 SQL 等价物:

Select ColumnB
From MyTable
Where ColumnA = '123'

对于使用 lambda 表达式的数据表。

4

2 回答 2

1

看看FirstOrDefault方法

var foundRow = dataTable.AsEnumerable().FirstOrDefault(row => string.Equals (row["ColumnA"].ToString(), "123", StringComparison.OrdinalIgnoreCase ));
if (foundRow != null) {
    // We found a match, do something with it.
    var colBValue = foundRow["ColumnB"].ToString(); 
}

FirstOrDefault返回与指定条件匹配的第一个元素,在这种情况下,它在 DataTable 的 [ColumnA] 列中查找字符串“123”。如果没有元素符合条件,FirstOrDefault则返回对象的默认值,对于 DataTable 是null

我不知道为什么你会得到你显示的异常,当我试图重现它时我没有。

于 2012-07-27T05:25:40.900 回答
0

我相信你正在寻找Where方法

dataTable.AsEnumerable().Select(row=>row["Value"].ToString()).Where(row => row["value"].ToString() == "123");
于 2012-07-26T20:09:18.057 回答