2012-12-13 66 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); }); 

這會讓你在第一個父對象中有兩個孩子,在第二個父對象中有一個孩子。

我希望這會有所幫助。