2013-04-24 35 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