使用IGrouping的值

时间:2014-01-02 09:35:40

标签: linq

在我的应用程序中,我使用了以下LINQ:

 var GroupedEmployyes = from e in EmpCollection
                                   group e by e.identifier into g
                                   select new { Employee= g, identifier = g.Key };

我将这个小组传递给其他一些功能如下:

     Save(GroupedEmployyes)

     Save(IEnumerable<IGrouping<string,Employee>> groupedEmployee)
     {



     }

如何使用Save方法从“groupedEmployee”参数访问“Employee”对象和“identifier”对象?

1 个答案:

答案 0 :(得分:1)

当您说new { Employee= g, identifier = g.Key };

时,您的链接表达式会创建匿名类型的对象

为了能够在另一个函数(例如Save)中获取这些值,您需要创建命名类型的对象。如果您无法为此次使用创建特殊类,请使用System.Tuple

另一方面,你创建雇员与密钥的配对是很奇怪的,因为IGrouping已经为你做了,所以例如:

 void Save(IEnumerable<IGrouping<string, Employee>> groupedEmployee)
 {
     foreach (var group in groupedEmployee)
     {
         Console.WriteLine(group.Key);

         foreach (var emp in group)
             Console.WriteLine(emp.ToString());
     }
 }

你可以用以下方式调用:

Save(EmpCollection.GroupBy(e => e.identifier));