Linq查询获取大孩子

时间:2012-12-13 10:50:35

标签: c# linq entity-framework

我正在尝试使用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)

1 个答案:

答案 0 :(得分: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个子节点,在第二个父对象中有1个子节点。

我希望这会有所帮助。