2017-06-05 20 views
0

我有一类结构和数据如下组内部列表数据:如何根据外列表在C#中的LINQ的关键

public class Company 
{ 
    public string CompanyName { get; set; } 
    public List<Employee> Employees { get; set; } 
} 
public class Employee 
{ 
    public string EmployeeName { get; set; } 
} 
    ObservableCollection<Company> list1 = new ObservableCollection<Company> 
     { new Company { CompanyName = "com1", 
         Employees = new List<Employee> 
         { new Employee {EmployeeName = "Ron"}, 
          new Employee { EmployeeName = "John" }, 
          new Employee { EmployeeName = "David" } } }, 
     new Company { CompanyName = "com2", 
         Employees = new List<Employee> 
         { new Employee {EmployeeName = "manuel"}, 
          new Employee { EmployeeName = "smith" }, 
          new Employee { EmployeeName = "rony" } } }, 
     new Company { CompanyName = "com3", 
         Employees = new List<Employee> 
         { new Employee {EmployeeName = "kevin"}, 
          new Employee { EmployeeName = "chacko" }, 
          new Employee { EmployeeName = "willy" } } }}; 

我想基于外公司名称Employee类组EmployeeNames的公司类。我如何在linq中实现这一点。

+0

请描述你想看到的结果。每个'员工'已经连接到'公司',因此公司对象可以被认为是员工的组。不过,我想你正在寻找不同的东西,所以请描述它是什么。 – dasblinkenlight

+0

其实我试图以xamarin形式实现分组。为此,我需要将内部列表分组。像这样http://motzcod.es/post/94643411707/enhance-xamarinforms-listview-with-grouping – Renjith

回答

1

我得到它的工作, 我已经添加了一个继承了IEnumerable

class GroupViewModel<T> : IEnumerable<T> 
{ 
    public IEnumerable<T> Items { get; private set; } 

    public string Name { get; private set; } 
    public string Id { get; private set; } 
    public GroupViewModel(string name,string id, IEnumerable<T> items) 
    { 
     this.Id = id; 
     this.Name = name; 
     this.Items = items; 
    } 

    public IEnumerator<T> GetEnumerator() 
    { 
     return this.Items.GetEnumerator(); 
    } 

    IEnumerator IEnumerable.GetEnumerator() 
    { 
     return this.Items.GetEnumerator(); 
    } 
} 

然后,我有分组列表如下一类:

  var groupedList = from model in list1 
        group model by new { model.CompanyName,model.Id, model.Employees } into wordCollection 
        select new GroupViewModel<Employee>(wordCollection.Key.CompanyName, wordCollection.Key.Id, wordCollection.Key.Employees); 
相关问题