我正在尝试使用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)
答案 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个子节点。
我希望这会有所帮助。