मैं SelectMany के साथ एक संग्रह के भीतर एक बच्चे संग्रह के परिणामों समतल कर सकते हैं:SelectMany तीन स्तर दीप
// 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();
यह मेरे फू सूची में सभी बार आईडी की सूची देता है। जब मैं तीन स्तरों को गहराई से जाने का प्रयास करता हूं तो गलत परिणाम वापस आ जाता है।
var q = source.SelectMany(foo => foo.Bar)
.SelectMany(bar => bar.Widget)
.Select(widget => widget.WidgetId)
.ToList();
मुझे फूओस की सूची में सभी बार्स में सभी विजेटों की सूची प्राप्त करने के लिए SelectMany का उपयोग कैसे करना चाहिए?
संपादित करें मैंने उपर्युक्त वाक्य को याद किया, लेकिन कोड लक्ष्य को दर्शाता है। मैं विजेट्स नहीं, सभी विजेट आईडी की एक सूची की तलाश में हूँ।
एक "गलत" परिणाम सभी विजेट आईडी वापस नहीं आये हैं।
मेरे लिए ठीक लग रहा है निर्दिष्ट कर सकते हैं इस() के साथ SelectMany का अधिभार कॉल कर सकते हैं। "गलत परिणाम लौटाया गया है" एक वर्णनात्मक त्रुटि संदेश नहीं है, आप क्या प्राप्त करते हैं, और आप क्या उम्मीद करते हैं? – erikkallen