1
public class MyClass
{
    public MyClass();

    public long Id { get; set; }
    public intScore { get; set; }
    public MyClass[] subclasses { get; set; }
    public string title { get; set; }
   .....    
 }

从外部源返回的结果是递归的,我正在尝试使用 linq 或使用递归的任何扩展方法从集合中检索结果,感谢任何帮助。

前任; 我的收藏是

Myclass results=XXXmethod(xxxx)// which gives me results.

subclasses 是 type 的列表Myclass,因此该列表将再次包含一些集合,并且反过来可以收集 agian 嵌套级别

假设服务返回了 10 个结果或Myclass[10] Myclass[0]再次返回Myclass[4]可能有 2 个或 4 个结果,需要建立一个集合 allitems

我正在尝试这样做,但有些缺失

results.class.subclusters.subclasses (o => o.subclasses )
               .SelectMany(x => x.subclasses ).ToList()

但这并没有给出正确的结果。

4

1 回答 1

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()
于 2012-08-25T08:12:46.487 回答