2017-06-05 22 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); 
相關問題