2015-03-02 58 views
0

具有以下的LINQ流利表达重复结果如果我尝试将流利语翻译为linq q表达式,我已经重复了值,尽管我在groupBy中使用Country.ToUpper():使用的GroupBy LINQ查询表达但不使用流利语法

var query = (from t in trains 
       group t by new {Country = t.Country.ToUpper(), t.Carriages} 
       into g 
       select new 
       { 
        Country = g.Key.Country, 
        TotalCarriage = g.Key.Carriages.Count, 
        SumCarriage = g.Key.Carriages.Sum(c => c.Length) 

       }).ToList(); 

enter image description here

我无法解释为什么发生这种情况。

回答

1

当您使用方法语法时,您不是将两个不同的值分组,而是将您分组在只有该国并将所有元素转换为Carriages。如果您想使用查询语法来执行该操作,则语法为:

var query = (from t in trains 
      group t.Carriages by t.Country.ToUpper() 
      into g 
      select new 
      { 
       Country = g.Key, 
       TotalCarriages = g.Count(), 
       SumCarriage = g.SelectMany(c => c).Sum(l => l.Length) 
      }).ToList();