用LET求一组,以求数量的总和
本文关键字:一组 LET | 更新日期: 2023-09-27 18:17:03
我有一个看起来像这样的数据集:
Name Type Quantity
A 1 2
A 2 3
B 1 3
由类Items定义,包含三个字段(string Name, int Type, double Quantity)。
存储在List<</p>
我需要做的是获得特定NAME的QUANTITY的SUM,但这个逻辑位于更大的LINQ查询中,所以我试图找到一种方法来使用LET语句。
知道我正在寻找一个(Name = TargetName)的总数量,我试图做这样的事情:
let items = Summary.Where(y => y.Name == TargetName).GroupBy.(z => z.Name)
,现在我可以使用项来得到我的总和,如下所示:
TotalQuantity = items.Sum(x => x.Quantity)
但这不起作用,得到以下错误:
错误2 'System.Linq。igrouing '不包含'Quantity'的定义,也不包含'Quantity'的扩展方法
这也是当我做x时的情况,在智能意义上没有数量选项(它给了我选项,好像这是一个列表)。
任何想法?我认为这是一个新错误(我是LINQ的新手)。谢谢你,
如果只需要对特定的名称求和,只需调用:
TotalQuantity = Summary.Where(y => y.Name == TargetName)
.Sum(x => x.Quantity);
,在这种情况下不需要使用GroupBy
。但是,如果您希望经常以不同的名称访问SUM
,则可以考虑先使用GroupBy
,然后使用ToDictionary
来提高性能:
var sumDic = Summary.GroupBy(z => z.Name)
.ToDictionary(g => g.Key,
g => g.Sum(x => x.Quantity));
所以,如果你想获得任何Name
的数量,只需使用sumDic
:
var result = sumDic[TargetName];