2012-02-01 43 views
3

我使用下面的代碼編組的工具集合:LINQ到集集團通過獲取原始實體回

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的關鍵字,而值是分組條件。無論如何要把它與原始工具聯繫起來。也許每個工具的關鍵點應該是唯一的,所以在執行分組後,我可以從工具集合中獲取原始工具。

回答

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); 
    } 
}