Dieser Code will nicht. Fehler: "System.Collections.Generic.List<Library.Raum>" kann nicht implizit in "Raeume" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)"
Was muss ich machen um bei einem LINQ eine Typisierte Liste zu erhalten? Also eine Collection vom Typ Raeume?
Das ist relativ eindeutig: Raeume ist keine List<Raum>, sondern davon abgeleitet. raeume.Where(...).ToList() liefert eine List<Raum>, Du hast also eine typisierte Liste, aber eben keine Collection. Du könntest in der Klasse Raeume einen Operator = schreiben, der eine List<Raum> behandelt, oder aber dort eine static void FromList(List<Raum> raumList) implementieren:
Raeume raeumeIO = Raeume.FromList(raeume.Where(r => r.TrefferQuote >= this.TrefferQuote).ToList()); // oder gleich Raeume raeumeIO = raeume.ByTrefferQuote(this); // und dort die Where implementieren
Eine andere Möglichkeit wäre, die Konstruktoren entsprechend zu nutzen:
void Main() { var c1 = new MyCollection { new MyItem { ID = 1 }, new MyItem { ID = 2 }, new MyItem { ID = 3 }, new MyItem { ID = 4 }, new MyItem { ID = 5 } };
var c2 = new MyCollection(c1.Where(item => 0 == (item.ID % 2)));
c2.Dump(); }
class MyItem { public int ID; }
class MyCollection : List<MyItem> { public MyCollection() : base() { }
public MyCollection(IEnumerable<MyItem> items) : base(items) { } }
Dann arbeite ich halt doch mit var und nehme erst dann den Raum wenn ich ihn auch wirklich brauche.