2017-07-11 27 views
0

列表使用内属性我有包含以下类型的对象组通过使用Lambda表达式

public class A { 

    public List<B> B {get;set;} 

} 

B class状态如下的列表。

public class B { 

    public List <C> C { get;set;} 
} 

C class状态如下。

public class C { 

    public int Id { get ; set ;} 
    public string Name { get; set;} 
} 

有人能指出我哪能组以上由CName属性列表。

+0

什么是你期望的输出(通过@chadalavada哈里什提供)? –

+0

姓名和多少次重复同名 – NoughT

回答

2
var results = a.SelectMany(a1 => a1.B.SelectMany(b1 => b1.C) 
       .GroupBy(g => g.Name) 
       .Select(g => new { Name = g.Key, Count = g.Count() })); 

应该返回包含Name属性每一个独特的名字中发现,有Count属性指定的多少是Name进行分组沿对象的列表。

SelectMany的嵌套调用将展平对象层次结构,GroupBy将在Name属性上创建分组。最后,通过Select返回一个新的匿名类型列表,并使用该组中的属性填充,其中g.Key是该分组基于的值(C.Name)。

小提琴可以发现Here

+0

感谢您的帮助。有用 – NoughT