2 Stimmen

Laden des Ergebnisses einer Linq-to-DataSet-Abfrage mit Join in eine Datentabelle

Ich habe eine Linq zu Dataset-Abfrage, die zwei Tabellen verbindet und extrahiert die gewünschten Parameter aus jeder. Ich muss sie in eine DataTable zur Bindung an eine DataGridView . Das Beispiel, das ich dazu gefunden habe, findet sich auf MSDN ist ein triviales Beispiel, das einen einzigen Wert aus einer einzigen Tabelle nimmt, aber als ich versuchte, meine Abfrage zu ändern, um ihr zu folgen, war ich nicht in der Lage, dies zu tun. Die CopyToDataTable() Methode erfordert, dass die Abfrage einem IEnumerable<DataRow> , aber wenn ich das tue, wird mir gesagt, dass ein expliziter Cast erforderlich ist; aber der Cast schlägt zur Laufzeit mit der Ausnahme fehl:

Unable to cast object of type 'd__61`4[System.Data.DataRow,System.Data.DataRow,System.Int32,<>f__AnonymousType0`1[System.Int32]]' zum Typ 'System.Collections.Generic.IEnumerable`1[System.Data.DataRow]'.

Ursprüngliche Arbeitsanfrage:

var query = MyDataSet.Table1.AsEnumerable().Join(MyDataSet.Table2.AsEnumerable(),
    table1 => table1.Field<Int32>("Table1_Id"),
    table2 => table2.Field<Int32>("Table1_Id"),
    (table1, table2) => new
    {
        Table1ID = table1.Field<Int32>("Table1_Id")
        //Other parameters commented out to simplify the example
    });

Nicht funktionierende Abfrage mit explizitem Cast:

IEnumerable<DataRow> query = (IEnumerable<DataRow>)MyDataSet.Table1.AsEnumerable()
                                             .Join(MyDataSet.Table2.AsEnumerable(),
    table1 => table1.Field<Int32>("Table1_Id"),
    table2 => table2.Field<Int32>("Table1_Id"),
    (table1, table2) => new
    {
        Table1ID = table1.Field<Int32>("Table1_Id")
        //Other parameters commented out to simplify the example
    });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X