Bindung LINQ-Abfrage zu DataGridView
Dies ist sehr verwirrend, ich benutze AsDataView zu binden Abfrage-Ergebnis eine dgv und es funktioniert gut mit den folgenden:
var query = from c in myDatabaseDataSet.Diamond where c.p_Id == p_Id select c;
dataGridView1.DataSource = query.AsDataView();
Jedoch, dieser führt zu einem Fehler:
var query = from item in myDatabaseDataSet.Items
where item.p_Id == p_Id
join diamond in myDatabaseDataSet.Diamond
on item.p_Id equals diamond.p_Id
join category in myDatabaseDataSet.DiamondCategory
on diamond.dc_Id equals category.dc_Id
select new
{
Product = item.p_Name,
Weight = diamond.d_Weight,
Category = category.dc_Name
};
dataGridView1.DataSource = query.AsDataView();
Fehler:
Instance argument: cannot convert from
'System.Collections.Generic.IEnumerable<AnonymousType#1>' to
'System.Data.DataTable'
AsDataView nicht zeigen, bis in Abfrage.(Liste). Warum ist das geschehen? Wie binden Sie die obige Abfrage auf die dgv dann?.
Werfen Sie einen Blick auf diesen link: LINQ to DataTable Vielleicht ist hier finden Sie die Antwort: Geben Sie Fehler bei der Konvertierung mithilfe von LINQ-mit einem DataSet
InformationsquelleAutor DanSogaard | 2010-03-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterschrift des AsDataView ist wie folgt:
Der einzige parameter ist die DataTable.
Die Abfrage, die Sie haben, ist wieder eine IEnumerable eines anonymen Typs, die nicht über eine implizite Konvertierung in eine DataTable (oder eine Sequenz von DataRow Instanzen, in dem Fall könnten Sie verwenden, um Ihnen helfen, erstellen einer DataTable).
Die Sie brauchen, um die Ergebnisse wieder in eine DataTable oder etwas, das Sie umwandeln kann in eine DataTable und dann wird es funktionieren.
In Ihrem Fall, es scheint, dass Sie waren (oder sind) mit typisierte DataSets. Wenn das der Fall ist, dann sollten Sie in der Lage, die Werte, die ausgewählt wurden, und erstellen Sie neue typisierte DataRow-Instanzen (es sollten factory-Methoden für Sie), die dann in eine typisierte DataTable, die AsDataView aufgerufen werden kann.
Ich aktualisiert meine Antwort spiegelt die Tatsache wider Sie verwenden, sind typisierte Datensätze und wie Sie vielleicht noch in der Lage sein zu verwenden, die AsDataView-Erweiterung-Methode.
InformationsquelleAutor casperOne
einfach konvertieren das Ergebnis in eine Liste, und binden Sie es an Ihr Stromnetz an.
InformationsquelleAutor Siyavash