-3

linqを使用して孫を取得しようとしていますが、これまでのところ成功していません。データの構造は以下のようなものです

    public class GrandParent 
{ 
    public int grandkey; 
    public List<GrandParent> parent { get; set; } 
}
public class Parent
{
    public int parentkey;
    public List<Child> child { get; set; }
}
public class Child
{
    public int childkey { get; set; }
    public string value { get; set; }
}

私は祖父母のオブジェクトを持っています。linqを使用して子の値を取得したい。2行でできることはわかっていますが、1行で何かを取得したいです

このようなものvar a = from hh in parent where hh.child.Select(c=>c.Value)

4

1 に答える 1

1

次のクラスに基づいています。

public class Parent
{
    public List<Child> Children { get; set; }
}

public class Child
{
    public string Key { get; set; }

    public int Value { get; set; }
}

そして、次の設定:

var parents = new List<Parent>
{
    new Parent
    {
        Children = new List<Child>
        {
            new Child { Key = "KEY1", Value = 5 },
            new Child { Key = "KEY2", Value = 0 },
            new Child { Key = "KEY3", Value = 1 },
            new Child { Key = "KEY4", Value = 0 }
        }
    },
    new Parent
    {
        Children = new List<Child>
        {
            new Child { Key = "KEY5", Value = 0 },
            new Child { Key = "KEY6", Value = 0 },
            new Child { Key = "KEY7", Value = 1 },
            new Child { Key = "KEY8", Value = 0 }
        }
    }
};

値==0のすべてのアイテムを次のように削除できます。

parents.ForEach(p => { p.Children.RemoveAll(c => c.Value == 0); });

これにより、最初の親オブジェクトに2つの子が残り、2番目の親オブジェクトに1つの子が残ります。

これがお役に立てば幸いです。

于 2012-12-13T12:06:17.670 に答える