-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 我想获取子值。我知道我可以在两行中做到这一点,但我想在一行中得到它

像这样的东西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 }
        }
    }
};

您可以使用以下方法删除所有带有 Value == 0 的项目:

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

这将使您在第一个父对象中有 2 个子对象,在第二个父对象中有 1 个子对象。

我希望这有帮助。

于 2012-12-13T12:06:17.670 回答