2012-12-13 39 views
-3

我正在尝试使用linq获取大孩子,但目前为止没有成功。数据结构如下: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

这没有意义,请重试(带编辑)。你的预期产出是多少? – musefan

+0

LINQ中的Q表示查询。查询不会改变事情,所以它应该如何删除一些东西?此外,你的代码显示一个简单的选择。那应该如何删除一些东西? –

+0

这里我试图让所有的child.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); }); 

这会让你在第一个父对象中有两个孩子,在第二个父对象中有一个孩子。

我希望这会有所帮助。