LINQ-Anfängerfrage

24/12/2008 - 00:21 von Thorsten Kleibaum | Report spam
Hallo zusammen,

habe mich heute mal ein wenig in LINQ eingearbeitet, stehe im Moment
jedoch ein bißchen auf dem Schlauch.

Ich habe ein Dictionary<int, b> bs, das Objekte vom Typ b und b1
aufnehmen kann (b1 ist also von b abgeleitet).
Der Typ b1 beinhaltet (zusàtzlich zum Typ b) eine List<v> vs.
Als Ergebnis der LINQ-Abfrage hàtte ich nun gerne eine Liste mit
sàmtlichen Objekten v aus dem Dictionary bs.

Mein LINQ-Ausdruck sieht derzeit folgendermaßen aus:
var vq = from b1 in bs.Values.OfType<b1>()
select b1.vs;

Damit bekomme ich, wenn ich das richtig sehe, ein IEnumerable<List<v>>
zurück. Was ich jedoch gerne hàtte, wàre ein IEnumerable<v>. Wie kann
ich also den LINQ-Ausdruck weiter aufschlüsseln, so daß direkt die
Objekte v zurückgegeben werden?
Habe schon versucht, um den obigen Ausdruck einen weiteren zu legen, der
dessen Ergebnis als Datenquelle nutzt, aber das hat irgendwie nicht
funktioniert.

Frohes Fest und Danke für Lösungsvorschlàge
Thorsten
 

Lesen sie die antworten

#1 Frank Dzaebel
24/12/2008 - 07:10 | Warnen spam
Hallo Thorsten,

Damit bekomme ich, wenn ich das richtig sehe, ein IEnumerable<List<v>>
zurück. Was ich jedoch gerne hàtte, wàre ein IEnumerable<v>. Wie kann
ich also den LINQ-Ausdruck weiter aufschlüsseln, so daß direkt die
Objekte v zurückgegeben werden?



var vq = (from b1 in bs.Values.OfType<B1>()
select b1.Vs).SelectMany(b=>b);

"SelectMany" projiziert jedes Element einer Sequenz
in ein IEnumerable<T> und fasst die resultierenden
Sequenzen in einer einzigen Sequenz zusammen.
_________________

BTW: Gross/Klein-Schreibweise angepasst gem.:

[Richtlinien für die Benennung]
http://msdn.microsoft.com/de-de/lib...33292.aspx

[Enumerable.SelectMany(TSource, TResult)-Methode (IEnumerable(TSource),
Func(TSource, IEnumerable(TResult))) (System.Linq)]
http://msdn.microsoft.com/de-de/lib...34336.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen