2011-05-26 27 views
7

कृपया मैं एक Linq अभिव्यक्ति के साथ आपकी मदद की जरूरत: सूचियों के साथLinq नेस्टेड सूची अभिव्यक्ति

मैं नेस्ट है वस्तुओं, यह कैसे मुख्य उद्देश्य पदानुक्रम लगता है कि (प्रत्येक पानी का छींटा उप-वर्ग का एक गुण है) है:

Folder 
-name 
-List<Subfolder> Subfolders 
       -name 
       -List<Document> Documents 
           -name 
           -key 

वस्तुओं की इस पदानुक्रम के बाद, मैं एक दस्तावेज़ का नाम है, और मुझे इसके लिए खोज और उसके मूल फ़ोल्डर (सबफ़ोल्डर) लौटना चाहते

उदाहरण:

Folder 
    -name: Customer 
    -List<Subfolder> Subfolders 
        -name: Personal 
        -List<Document> Documents 
            -name: Resume 
            -key : 1 

यदि मैंने कहा: "फिर से शुरू करें", linq अभिव्यक्ति मुझे वापस करनी चाहिए: सबफ़ोल्डर "व्यक्तिगत" (ऑब्जेक्ट)।

कृपया मेरी मदद करें, क्योंकि दो नेस्टेड सूचियों में मुझे परेशानी हो रही है, एक के साथ यह आसान होगा।

अग्रिम धन्यवाद।

उत्तर

10
folders 
    .SelectMany(s => s.SubFolders) 
    .FirstOrDefault(s => s.Documents.Any(d => d.Name == "Resume")); 

मैं हिप यहाँ से शूटिंग कर रहा हूँ, लेकिन मुझे लगता है कि चाहिए काम ....

10

आसान है कि:

var folders = ...; 

var subfolders = 
    from folder in folders 
    from subfolder in folder.Subfolders 
    where subfolder.Documents.Any(d => d.Name == "Resume") 
    select subfolder; 

सोचो LINQ!

संबंधित मुद्दे