Class A
{
string name;
IList<A> minorList = new List<A>();
}
IList<A> majorList = new List<A>();
我希望从majorList
获取A的实例,具体取决于名称值,但没有必要将其放在majorList
中。 minorList
也可以包含名称。我如何使用Linq获取它。如果只有majorList
,我可以使用
A a = majorList.First(s => s.Name == "Name");
如果它不在majorList中,而是在majorList的一些实例列表中呢?
答案 0 :(得分: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));
如果您的列表中有任何周期,您当然会遇到问题...