2012-06-12 74 views
0
Class A 
{ 
    string name; 
    IList<A> minorList = new List<A>(); 
} 

IList<A> majorList = new List<A>(); 

我想根據名稱值從majorList獲取A的實例,但不需要在majorList中包含它。 minorList也可以包含名稱。我怎樣才能使用Linq。如果它的存在只有majorList我可以用Linq list inside列表查詢

A a = majorList.First(s => s.Name == "Name"); 

怎麼樣,如果它不是在majorList但在一些majorList實例的名單怎麼做呢?

回答

3

聽起來像是你想要的東西,如:

bool ContainsName(A a, string name) 
{ 
    return a.name == name || a.minorList.Any(x => ContainsName(x, name)); 
} 

然後:

A a = majorList.First(x => ContainsName(x, name)); 

當然你結束了一個問題,如果有在你的名單是任何週期...

+0

喜喬恩,這是正確的嗎? 'a a = majorList.First(x => {return a.name == name || minorList.Any(x => ContainsName(x,name));});' –

+0

@NiranjanKala:No - you've got有方法,否則你不能遞歸地調用它......如果你有方法,你可以從lambda表達式中調用它。 –

+0

感謝喬恩,+1解決我的困惑和這個很好的答案。 –