2013-04-24 34 views
0

我有一類爲: -LINQ不工作

Class EmployeesList 
{ 
    public string Category{get;set;} 
    public string Name{get;set;} 
} 

而一個list<EmployeesList>ListOfEmployee: -

Category = 「AA」 Name= 「A」 
Category = 「AA」 Name= 「B」 
Category = 「AA」 Name= 「C」 
Category = 「AA」 Name= 「D」 
Category = 「BB」 Name= 「E」 
Category = 「BB」 Name= 「F」  
Category = 「CC」 Name= 「G」 
Category = 「CC」 Name= 「H」 
Category = 「CC」 Name= 「I」 

我已經做了兩個模型類

Class EmployeeModel 
{ 
    public string EmployeeCategory(get;set;) 
    public List<Employees> EmployeeList {get;set;} 
} 
Class Employee 
{ 
    public string EmployeeName(get;set;) 
    public int EmployeeID(get;set;) 
} 

我問題是我如何使用LINQ從ListOfEmployee製作ObservableCollection<EmployeeModel>

我試過這個,但沒有得到正確的輸出。在這種情況下,EmployeeList總是有第一個和多餘的值。請幫忙。

var tables = ListOfEmployee 
      .GroupBy(f => f. EmployeeCategory)  
      .Select(f => new Employee 
          { 
           EmployeeName = f.Key, 
           EmployeeList 
           = f.Select(g => new Employee 
               { EmployeeName = f.First().Name} 
              ) 
            .ToList() 
          } 
        ) 
      .ToList(); 
+1

你想要什麼結果獲得? – Alex 2013-04-24 11:06:15

回答

3

嘗試以下操作:

var employees = ListOfEmployee 
    .GroupBy(e => e.Category) 
    .Select(g => 
     new EmployeeModel() 
     { 
      EmployeeCategory = g.Key, 
      EmployeeList = g.Select(e => 
       new Employee() 
       { 
        EmployeeName = e.Name, 
        EmployeeID = GetEmployeeID() 
       }).ToList() 
     }); 

return new ObservableCollection<EmployeeModel>(employees); 
+0

+1我想寫同樣的內容,但並不確定它確實是OP想要的東西。另外我會改變你的構造函數來創建具有ID的Employee,比如 - 3-rd line:.Select((g,i)=>,7 line:EmployeeList = g.Select((e,j)=>並在第9行之後插入1行:EmployeeID =(i + j + 1) – Alex 2013-04-24 11:15:13

+0

是的,我遺漏了ID以防OP有其他功能來創建它我現在編輯我的答案 – AlexFoxGill 2013-04-24 11:16:15

+0

非常感謝。我 – Girish 2013-04-25 08:43:08