通过获取原始实体,Linq到Collections Group

时间:2012-02-01 15:54:41

标签: c# linq-to-entities

我正在使用以下代码对工具集合进行分组:

 var filteredTools = from t in tools
                               group t by new { t.ModuleName,t.Number}
                               into g
                               select new { ModuleName = g.Key, Values = g };

工具是一个简单的集合,定义如下:

List<Tool> tools

执行分组后,我返回3行(从40行开始),因此分组工作正常。行具有g.Key的键,值是分组条件。无论如何都要将它与原始工具联系起来。也许每个工具的密钥都应该是唯一的,因此在执行分组后,我可以从工具集中获取原始工具。

1 个答案:

答案 0 :(得分:7)

是的,这些工具仍然存在于每个组中:

foreach (var group in filteredTools) 
{
    // This is actually an anonymous type...
    Console.WriteLine("Module name: {0}", group.ModuleName);
    foreach (Tool tool in group.Values)
    {
        Console.WriteLine("  Tool: {0}", tool);
    }
}

说实话,这里你不需要你的匿名类型。你可以使用:

var filteredTools = tools.GroupBy(t => new { t.ModuleName,t.Number});
foreach (var group in filteredTools) 
{
    // This is actually an anonymous type...
    Console.WriteLine("Module name: {0}", group.Key);
    foreach (Tool tool in group)
    {
        Console.WriteLine("  Tool: {0}", tool);
    }
}