2009-10-14 20 views
10

निम्न कोड सेटअप को देखते हुए:LINQ से ऑब्जेक्ट का उपयोग करके सभी नेस्टेड संग्रहों में अलग-अलग मानों का चयन करें?

public class Foo { 
List<string> MyStrings { get; set; } 
} 

List<Foo> foos = GetListOfFoosFromSomewhere(); 

LINQ का उपयोग कर सभी Foo उदाहरणों में MyStrings में सभी विशिष्ट स्ट्रिंग्स की सूची कैसे प्राप्त करूं? मुझे लगता है कि यह आसान होना चाहिए, लेकिन इसे काफी समझ नहीं सकता है।

string[] distinctMyStrings = ? 

उत्तर

14
// If you dont want to use a sub query, I would suggest: 

     var result = (
      from f in foos 
      from s in f.MyStrings 
      select s).Distinct(); 

     // Which is absoulutely equivalent to: 

     var theSameThing = foos.SelectMany(i => i.MyStrings).Distinct(); 

     // pick the one you think is more readable. 

मैं भी दृढ़ता से Enumerable विस्तार तरीकों पर MSDN पढ़ने की सलाह। यह बहुत जानकारीपूर्ण है और इसमें महान उदाहरण हैं!