Datasource an List<T> binden
-
-
Da ich nun einige Mal Probleme mit Anonymous Type hatte, wollte ich nun mal fragen, ob der Lösungsansatz soweit korrekt ist - bzw. ein kleines Problem gibt es dabei auch noch.
Bei dieser Anweisung habe ich die Fehlermeldung bzgl. des anonymous types erhalten.
public IEnumerable<Befund> GetBefundWithNames() { using (dbEntities db = new dbEntities()) { var result = from b in db.Befund join n in db.Name on b.ID equals n.BefundID select new { Befund = b.Bezeichnung, Name = n.Name }; return result; } }
Um das Problem zu lösen, hab ich eine extra Klasse erstellt
public class Befunde { public Befund Bef { get; set; } public Name BName { get; set; } }
Und dann folgende Anweisung geschrieben
public IEnumerable<Befunde> GetBefundWithNames() { using (dbEntities db = new dbEntities()) { var result = from b in db.Befund join n in db.Name on b.ID equals n.BefundID select new Befunde { Bef= b, BName = n }; return result.ToList(); } }
Aufruf erfolgt mit
DataGridView1.DataSource = DB.GetBefundWithNames();
Erst mal die Frage, was haltet ihr grundsätzlich von der Lösung mit der eigenen Klasse? Ist das ein sauberer Lösungsansatz?
Wenn ich die Liste nun als DataSource an meinen GridView hängen möchte, werden anstatt der Daten leider nur ProjektName.Befund bzw. ProjektName.Name
angezeigt.
Wie kann ich bestimmen, was angezeigt werden soll?
Folgendes geht jedenfalls nichtBef= b.Bezeichnung, BName = n.Name
Ich danke Euch!
-
Das mit dem richtigen Anzeigen der Daten hat sich geklärt:
public class Befunde { public string Bef { get; set; } public string Name { get; set; } }
Aber weiterhin die Frage: gutes oder schlechtes Vorgehen im Umgang mit anonymous Types?
-
Was gefällt dir daran denn nicht? Außer der Variante mit dynamic (s. http://www.c-plusplus.net/forum/301608) gibt es wohl auch keinen eleganten Weg.
Du könntest zwar ein untypisiertes IEnumerable zurückgeben, jedoch verlierst du damit m.E. alle Vorzüge der modernen .NET-Entwicklung (zu .NET 1.x Zeiten war dies ja der einzige Weg, aber daher wurden ja auch ab .NET 2.0 generics eingeführt).
-
@Th69
Danke - wollte nur Eure Meinung dazu wissen!
Das mit dynamic werde ich mir aber trotzdem mal noch anschauen.