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.

サブクラスはタイプのリストであるMyclassため、このリストには再びいくつかのコレクションがあり、次に、agianネストされたレベルを収集できます。

サービスが10件の結果を返したか、2件または4件の結果Myclass[10] Myclass[0]が再びMyclass[4]発生している場合、すべてのアイテムのコレクションを作成する必要があります。

私はこのようにしようとしていますが、いくつかが欠けています

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 に答える