da e selezionare in c # .net?

Qualcuno può dirmi come specificare la particolare colonna nella dichiarazione scelta di seguito:

var combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals dt2.Field("MethodName") select new { dt1, dt2 }; DataTable finaldt = new DataTable("FinalTable"); finaldt.Columns.Add(new DataColumn("sp", typeof(string))); finaldt.Columns.Add(new DataColumn("Method", typeof(string))); finaldt.Columns.Add(new DataColumn("Class", typeof(string))); finaldt.Columns.Add(new DataColumn("BLLMethod", typeof(string))); DataRow newrow = finaldt.NewRow(); foreach (var row in combinedrows) { DataRow dataRow = finaldt.NewRow(); dataRow.ItemArray = row.dt1.ItemArray; finaldt.Rows.Add(dataRow); } 

Se vuoi specificare quali colonne vuoi selezionare, dovresti provare a cambiare

 combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals dt2.Field("MethodName") select new { dt1, dt2 }; 

nel

 combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals dt2.Field("MethodName") select new { dt1.columnName; dt2.columnName2; dt2.columnName3; etc. } 

Spero che questo sia ciò che stavi cercando.

Puoi dare un’occhiata a LinQ-CheatSheet

Beh, non è proprio chiaro cosa vuoi, ma qualcosa del genere, forse?

 var combinedRows = from dt1 in DsResults.Tables[0].AsEnumerable() join dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals dt2.Field("MethodName") select new { MethodName = dt1.Field("MethodName"), Foo = dt2.Field("Foo"), Bar = dt1.Field("Bar") }; 

Non sei sicuro di quale sia la tua domanda … La query linq è un normale join tra dsResults.Tables [0] e dsResults.Tables [1] in base al campo MethodName.

Cosa stai cercando di fare?

@Prem: usa questo codice come funzionante, controlla.

 var combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() join dt2 in DsResults.Tables[1].AsEnumerable() on dt1.Field("MethodName") equals dt2.Field("MethodName") select new { sp = dt1.Field("Tab1_col1"), Method = dt1.Field("MethodName"), _class = dt1.Field("Class"), BLLMethod = dt1.Field("Tab2_col2") }; DataTable finaldt = new DataTable("FinalTable"); finaldt.Columns.Add(new DataColumn("sp", typeof(string))); finaldt.Columns.Add(new DataColumn("Method", typeof(string))); finaldt.Columns.Add(new DataColumn("Class", typeof(string))); finaldt.Columns.Add(new DataColumn("BLLMethod", typeof(string))); DataRow newrow = finaldt.NewRow(); foreach (var row in combinedrows) { DataRow dr = finaldt.NewRow(); dr["sp"] = row.sp; dr["Method"] = row.Method; dr["Class"] = row._class; dr["BLLMethod"] = row.BLLMethod; finaldt.Rows.Add(dr); } 

Leggi il tuo commento Penso che quello che vuoi non sia un join ma il seguente:

 var combinedrows = from dt1 in DsResults.Tables[0].AsEnumerable() from dt2 in DsResults.Tables[1].AsEnumerable() where dt1.Field("MethodName") equals dt2.Field("MethodName") select new { dt1, dt2 }; 

Restituisce file ony da entrambe le tabelle che hanno lo stesso “MethodName”.