Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
DataTable mit Linq füllen
webbenny
myCSharp.de - Member



Dabei seit:
Beiträge: 1

Themenstarter:

DataTable mit Linq füllen

beantworten | zitieren | melden

verwendetes Datenbanksystem: MS-SQL 2008

Ich will mit einer Linq Abfrage auf eine MSSQL 2008 Tabelle ein DataTable füllen.

Dazu gehe ich wie folgt vor:

            MyDataContext db = new MyDataContext();

            IEnumerable<DataRow> query = (from products in db.Products.AsEnumerable()
                                          select new
                                          {
                                              products.SNr,
                                              products.ItemNr,
                                              products.Desc
                                          }) as IEnumerable<DataRow>;

            DataTable dt = new DataTable();
            dt = query.CopyToDataTable<DataRow>();

Komischweise erhalte ich eine Null-Exception für query.
Hat jemand eine Idee, woran das liegen kann? Spalten, Tabellen usw. sind korrekt. Beim builden werden ebenfalls keine Fehler ausgegeben.

Nur zur Laufzeit kommt: "Der Wert darf nicht NULL sein. Parametername: source"

In der Zeile:

dt = query.CopyToDataTable<DataRow>();

Gruß, webbenny
private Nachricht | Beiträge des Benutzers
Icer
myCSharp.de - Member



Dabei seit:
Beiträge: 9

beantworten | zitieren | melden

Hi,

ich vermute beim Safe Cast mit as Enumerable<DataRow> erhältst du null zurück, da du nunmal einen anonymen Typen erstellst und der nunmal keine DataRow ist. Entweder erstellst du jetzt eine DTO Klasse welche die Informationen weitertransportiert oder du machst dich schlau wie man eine query mit anonymen Typen in eine DataTable castet. ;) Wenn du natürlich keine DataRow hast, dann kannst du auch nicht die ExtensionMethod CopyToDataTable nutzen. Also: per Hand machen! :)

Per Hand: (in etwa...)


var query = from products in db.Products select new { 
                                              products.SNr,
                                              products.ItemNr,
                                              products.Desc};
DataTable dt = new DataTable();
//InitColumns - Wie auch immer! ;)
foreach(var product in query)
{
dt.Rows.Add(new object[]{producst.SNr, products.ItemNr, products.Desc});
}

So long...
private Nachricht | Beiträge des Benutzers