如何修改C#方法实现SQL数据库同ItemID的数量求和?
解决同ItemID记录的数量求和问题
嘿,我来帮你搞定这个需求!你现在的Available方法因为用了FirstOrDefault(),只会取到匹配ItemID的第一条记录的数量,所以多条同ID数据时就没法得到总和了。其实用LINQ的Sum()方法就能轻松解决这个问题。
修改后的实现代码
public int Available(Item i) { // 筛选所有对应ItemID的记录,直接对qty字段求和,无匹配时返回0 return ItemDetails.Where(x => x.itemID == i.ID).Sum(x => x.qty); }
简单解释下:
Where(x => x.itemID == i.ID):先把所有itemID和传入的Item.ID匹配的记录筛选出来Sum(x => x.qty):对这些筛选出来的记录的qty字段做累加求和- 特别方便的是,当没有找到任何匹配的记录时,
Sum()会自动返回0,所以你完全可以去掉原来的空值判断逻辑,代码更简洁利落
这样改完之后,数据库里两条ItemID为117的记录(比如各7个数量),这个方法就会返回总和14,正好符合你的预期。
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

