2016-03-28 64 views
0

我有一個DataTable,我想在DataTable上選擇與文本框中的輸入相匹配的多個列。下面的代碼只選擇1列。使用LINQ在DataTable上選擇2列或更多列

var result = from data in mDataTable.AsEnumerable() 
       where data.Field<string>("Code") == txtCode.Text 
       select data.Field<string> ("Description"); 

    foreach (var res in result) { 

     txtxDescription.Text = res.ToString(); 
    } 

如何使用LINQ在DataTable上選擇2列或更多列?

+1

你爲什麼不選擇整行?這樣,您將可以訪問所有需要的列。 –

回答

2

爲什麼不選擇全行(DataRow對象),然後從中獲取所有必需的值?

var rows = mDataTable.AsEnumerable() 
        .Where(data => data.Field<string>("Code") == txtCode.Text); 

foreach(DataRow r in rows) 
{ 
    txtxDescription.Text = r.Field<string>("Description"); 
} 

另一種選擇是將數據映射到匿名對象:

var result = from data in mDataTable.AsEnumerable() 
      where data.Field<string>("Code") == txtCode.Text 
      select new 
        { 
         Description = data.Field<string> ("Description"), 
         Code = data.Field<string> ("Code") 
        }; 

foreach (var res in result) 
{ 
    // last value always replace `txtxDescription.Text` ?? 
    txtxDescription.Text = res.Description; 
    txtxCode.Text = res.Code; 
}