将VB.NET LINQ查询与Sum转换为C#LINQ查询

时间:2013-12-17 09:30:29

标签: c# vb.net linq

我有一个用VB.NET编写的LINQ查询:

foo = (From p In lOrder 
       Group By p.ItemCode Into Group = Sum(p.Quantity)
      ).ToDictionary(Function(x) x.ItemCode, Function(x) x.Group)

我的问题是翻译总和。 C#似乎不太喜欢它。

有人可以帮我翻译这个查询吗?

谢谢

2 个答案:

答案 0 :(得分:2)

以下是C#中LINQ查询的精确翻译:

var foo = lOrder.GroupBy(p => p.ItemCode, 
                           (key, values) => new 
                           {
                               ItemCode = key, 
                               Group = values.Sum(v => v.Quantity)
                           })
                .ToDictionary(x => x.ItemCode, x => x.Group);

答案 1 :(得分:0)

如果我理解正确,您希望在项目代码与此代码下的项目累积数量之间进行映射。

给定IEnumerable命名订单,您可以执行以下操作:

  var foo = from p in orders
  group p by p.ItemCode into OrderGroupedByCode
  select new { Code = OrderGroupedByCode.Key, Sum = OrderGroupedByCode.Sum(x => x.Quentity) };

这为您提供了IEnumerable的匿名对象,您可以轻松地将其转换为您想要的字典:

foo.ToDictionary(x => x.Code, x => x.Sum)