私はSelectManyで、コレクション内の子コレクションの結果を平らにすることができますSelectMany 3つのレベルディープ
// a list of Foos, a Foo contains a List of Bars
var source = new List<Foo>() { ... };
var q = source.SelectMany(foo => foo.Bar)
.Select(bar => bar.barId)
.ToList();
これは私のFooリスト内のすべてのバーIDのリストを提供します。私は3つのレベル深く行くと、間違った結果が返されます。
var q = source.SelectMany(foo => foo.Bar)
.SelectMany(bar => bar.Widget)
.Select(widget => widget.WidgetId)
.ToList();
どのように私は、FOOSの私のリストにあるすべてのバーにあるすべてのウィジェットの一覧を取得するにはSelectManyを使用すべきですか?
上記の文が間違っていますが、コードには目標が反映されています。ウィジェットではなく、すべてのウィジェットIDのリストを探しています。
"間違った"結果がすべてのウィジェットIDが返されるわけではありません。
は私にOK見えるラムダexperessionを使用して投影を指定できるようにするとSelectManyのこのオーバーロード()を呼び出すことができます。 "間違った結果が返されます"という記述的なエラーメッセージではありません。何を得るのですか?何を期待していますか? – erikkallen