2013-08-16 120 views
5

我有一個DataTable我正試圖做一個簡單的選擇行包含一個值。LINQ從DataTable中選擇DataRow

我的代碼

var LoginDetails = from myRow in DTOperators.AsEnumerable() 
          where myRow.Field<string>(0) == UserName 
          select myRow; 

我想檢查用戶名字符串在數據表

位置0行存在,當我運行此查詢我得到一個空白數據行回來。

我曾嘗試使用[]周圍,我要選擇的位置。

任何人能看到我在做什麼錯。

+0

看起來不錯,什麼是異常或問題? – Matten

+0

字段索引是否正確?我知道你想檢查位置0,但它是否包含名稱?我嘗試了一個簡單的數據表,我檢查了位置1,它確實返回了2條記錄。 – Nilesh

+0

你正在檢查'=='甚至空間可能會造成麻煩! –

回答

16

你必須檢查,如果你有正確的列比較和你的表來檢查數據。這項工作很好:

var DTOperators = new DataTable(); 
var UserName = "test"; 
DTOperators.Columns.Add("UserName", typeof(string)); 
DTOperators.Rows.Add("test1"); 
DTOperators.Rows.Add("test"); 
var LoginDetails = from myRow in DTOperators.AsEnumerable() 
        where myRow.Field<string>(0) == UserName 
        select myRow; 

我有一個數據行ENumerable。 您也可以嘗試按列名得到數據:

var LoginDetails = DTOperators.Rows 
           .Cast<DataRow>() 
           .Where(x => x["UserName"] == UserName).ToList();