public class MyClass
{
public MyClass();
public long Id { get; set; }
public intScore { get; set; }
public MyClass[] subclasses { get; set; }
public string title { get; set; }
.....
}
从extrenal源返回的结果是递归的,我试图使用linq或使用递归的任何扩展方法从集合中检索结果,任何帮助表示赞赏。
离;我的收藏是
Myclass results=XXXmethod(xxxx)// which gives me results.
子类是Myclass
类型的列表,所以这个列表将再次有一些集合,并且可以收集agian嵌套级别
说该服务返回了10个结果,或者Myclass[10]
Myclass[0]
再次拥有Myclass[4]
,可能有2个或4个,需要构建一个集合allitems
我想这样做,但有些人不见了
results.class.subclusters.subclasses (o => o.subclasses )
.SelectMany(x => x.subclasses ).ToList()
但是没有给出正确的结果。
答案 0 :(得分:3)
LINQ本身不支持递归方法,但你可以使用如下的递归方法:
public class MyClass
{
public int Id { get; set; }
public MyClass[] SubClasses { get; set; }
//More properties
public IEnumerable<MyClass> GetRecursive()
{
yield return this;
if (SubClasses != null)
{
foreach (var item in SubClasses
.Where(s => s != null)
.SelectMany(x => x.GetRecursive()))
{
yield return item;
}
}
}
}
然后致电:
myClass.GetRecursive()