Fråga : Hur gör I-sammanslutningen 2 Lists in i en DataTable using LINQ?

Hi: förmiddagen för

I är pröva till datakällor för sammanslutning 2 in i en DataTable using LINQ- och för CopyToDataTable.
The datakällor, är av typ List>.



//definierar de bordlägga- & för columns
DataTable handelsresandearna;

Travelers = nya DataTable (”handelsresandear”); kolonn för
DataColumn;
column = nya DataColumn (”FullName”, Type.GetType (”System.String”));
Travelers.Columns.Add (column);
column = nya DataColumn (”IsFreePlace”, Type.GetType (”System.Boolean”));
Travelers.Columns.Add (column);
column = nya DataColumn (”IndividualPaymentAmount " , Type.GetType (”System.Decimal”));
Travelers.Columns.Add (column); queryen för


////////////////////////////////////////////////////////////////////////////////////////////////////
//som konsoliderar 2 datakällor in i källor för data för
//för LINQ-query
//, har efter bilda:
//
//  ListOfItems --> ListA, information om int>>
//
// --> ListB, query för decimal>>
//
//
////////////////////////////////////////////////////////////////////////////////////////////////////
var = (från pax i ListOfItems
från pInfo i Information
var pax. Värdera valt nytt för == pInfo.Key.TravelerID
{pax. Key.FirstName,
pax. Key.LastName,
pax. Key.IsFreePlace,
pInfo.Value}); lager för


//detta konsoliderade info in i en table
Travelers = query.CopyToDataTableRow> ();


////////////////////////////////////////////////////////////////////////////////////////////////////
//, när I-försök det ovannämnt, mig får efter kompilatorfelet:
////////////////////////////////////////////////////////////////////////////////////////////////////
Error 31 anföra som exempel argument: kan inte konvertera från ”System.Collections.Generic.IEnumerableousType#1>” till 'br/>
Error 30 ”System.Collections.Generic.IEnumerableousType#1>” för System.Collections.Generic.IEnumerable.Data.DataRow>'< innehåller inte en definition för ”CopyToDataTable” och den bäst f8orlängningsmetodöverbelastningen ”System.Data.DataTableExtensions. CopyToDataTable (System. Collections. Generic.IEnumerable)” har någon ogiltig arguments

////////////////////////////////////////////////////////////////////////////////////////////////////
Next, mig försökte efter: query för
////////////////////////////////////////////////////////////////////////////////////////////////////
IEnumerable = (från pax i ListOfItems
från pInfo i Information
var pax. Värdera valt nytt för == pInfo.Key.TravelerID
{pax. Key.FirstName,
pax. Key.LastName,
pax. Key.IsFreePlace,
pInfo.Value});

////////////////////////////////////////////////////////////////////////////////////////////////////
//, när I-försök det ovannämnt, mig får efter kompilatorfelet: omvändtyp ”System.Collections.Generic.IEnumerableousType#1>” för
////////////////////////////////////////////////////////////////////////////////////////////////////
Can inte implicitly till ”System.Collections.Generic.IEnumerable.Data.DataRow>”. En explicit omvandling finns (är du saknaden en cast?),



I kan lätt precis använda den 1st metoden och iterate därefter med en foreach kretsar, men försök för I-would
like att använda den CopyToDatTable () metoden av System.Data.DataTableExtensions.


Thanks i förskott,
JohnB
" klar "

Svar : Hur gör I-sammanslutningen 2 Lists in i en DataTable using LINQ?

Hi jxbma;

Queryen du är pröva att utföra och fylla dess resultat in i en DataTable med ska inte arbete. Syntaxen för CopyToDataTablen är som följer:

Delad allmänhet fungerar CopyToDataTable (av T som DataRow) (_,
      källa som IEnumerable (av _ för T),
) Som DataTable

Men vad du har, är efter:

var-query = (från pax i ListOfItems
                   från pInfo i information
                   var pax. Värdera == pInfo.Key.TravelerID
                   välj nytt {pax. Key.FirstName,
                                        pax. Key.LastName,
                                        pax. Key.IsFreePlace,
                                        pInfo.Value});

Vilket typen av queryen är av anonym typ som synes från den valda satsen var du använder nyckelordet som är nytt utan en typ. När du query, två listar resultaten är av något listar eller IEnumerable. Det finns inget fungerar att den ska omvänden en lista till en DataRow av en DataTable.

Den ska lösningen är att kretsa till och med resultaten och att skapa en DataRow från DataTablen för varje beståndsdel av resultatuppsättningen.

Fernando

Andra lösningar  
 
programming4us programming4us