LINQ:获得所有子项目总和的有效方法

LCJ*_*LCJ 3 .net c# linq

我为每个循环都有以下内容来获取所有子对象的总和.使用LINQ有更好的方法吗?

Purchase p1 = db.Purchases.FirstOrDefault(p => p.PurchaseId == 1);

int total = 0;
foreach (SellingItem item in p1.SellingItems)
{ 
   total = total + Convert.ToInt32(item.Price);
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

参考:

  1. 如何获得linq中最高和最低价格项目的总和

  2. 在linq中使用ALL运算符来过滤EntitySet的子项

Jon*_*eet 11

听起来你只是想要:

// Any reason for FirstOrDefault rather than SingleOrDefault?
var purchase = db.Purchases.FirstOrDefault(p => p.PurchaseId == 1);

if (purchase != null)
{
    var total = purchase.SellingItems
                        .Sum(x => Convert.ToInt32(x.Price));
    ...
}
// TODO: Work out what to do if there aren't any such purchases
Run Code Online (Sandbox Code Playgroud)

为什么你需要转换价格呢?什么类型Price,为什么它不是正确的类型?(那真的想成为int而不是decimal吗?)