如何根据匹配数据表中给定值的A列获得B列的值?

时间:2012-07-26 20:04:46

标签: .net-3.5 lambda datatable

我希望在第一行找到列B的值,列A =“123”。

我试过了:

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

但我得到表达式不能包含lambda表达式

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

编辑:

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

Select ColumnB
From MyTable
Where ColumnA = '123'

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

2 个答案:

答案 0 :(得分:1)

查看FirstOrDefault method

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

我不知道你为什么会得到你所展示的例外,当我试图重现它时我没有。

答案 1 :(得分:0)

我相信您正在寻找Where方法

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