2016-03-28 6 views
0

Ich habe eine DataTable und ich möchte mehrere Spalten auf der DataTable, die die Eingabe in das Textfeld entspricht. Der folgende Code wählt nur 1 Spalte aus.Wählen Sie 2 oder mehr Spalten auf DataTable mit LINQ

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(); 
    } 

Wie kann ich 2 oder mehr Spalten auf DataTable mit LINQ auswählen?

+1

Warum Sie nicht die gesamte Zeile auswählen? Auf diese Weise haben Sie Zugriff auf alle Spalten, die Sie benötigen. –

Antwort

2

Warum nicht ganze Zeilen auswählen (DataRow Objekt) und dann alle notwendigen Werte von ihnen nehmen?

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

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

eine weitere Option ist, Daten zu anonymen Objekte zu projizieren:

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; 
} 
Verwandte Themen