2016-03-28 30 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; 
}