Zur Info:
Casting-Methode, kann auch in eigene Klasse gepackt werden:
Wird durch den Designer erstellt:
public System.Data.Linq.Table<tblArtikel> tblArtikels
{
get
{
return this.GetTable<tblArtikel>();
}
}
public System.Data.Linq.Table<tblProjektDaten> tblProjektDaten
{
get
{
return this.GetTable<tblProjektDaten>();
}
}
Selbst zu erstellender Code, Methodendefinition:
public DataTable TesteLINQReturn()
{
DataTable dt = new DataTable();
dt.Columns.Add("ArtArtikelGUID", typeof(System.Guid));
dt.Columns.Add("ArtBeschreibungKurz", typeof(System.String));
dt.Columns.Add("ProjektGUID", typeof(System.String));
var products = from p in this.tblArtikels
from c in this.tblProjektDaten
select new
{
p.ArtArtikelGUID,
p.ArtBeschreibungKurz,
c.ProjektGUID,
};
foreach (var ergebnis in products)
{
DataRow dr = dt.NewRow();
dr["ArtArtikelGUID"] = ergebnis.ArtArtikelGUID;
dr["ArtBeschreibungKurz"] = ergebnis.ArtBeschreibungKurz;
dr["ProjektGUID"] = ergebnis.ProjektGUID;
dt.Rows.Add(dr);
}
return dt;
}
Selbst zu erstellender Code, Methodenaufruf:
(Hier einfach zu Testzwecken Ausgabe in eine MessageBox, bei sehr vielen Treffern ist eher ein DataGrid sinnvoll)
IEnumerable<LINQReturn> products = TesteLINQReturn();
foreach (var ergebnis in products)
{
MessageBox.Show("ArtArtikelGUID: " + ergebnis.ArtArtikelGUID.ToString() + " ArtBeschreibungKurz: " + ergebnis.ArtBeschreibungKurz + " ProjektGUID: " + ergebnis.ProjektGUID.ToString());
}
Gruß
wazer317