对于每个循环,我都有以下内容来获取所有子对象的总和。有没有更好的方法使用 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);
}
参考:
对于每个循环,我都有以下内容来获取所有子对象的总和。有没有更好的方法使用 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);
}
参考:
听起来你只是想要:
// 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
为什么你需要价格的转换呢?什么类型是Price
,为什么它不是正确的类型?(这真的想要int
而不是decimal
?)
p1.SellingItems.Sum(p => p.Price)
尝试使用 Linq Sum方法:
Purchase p1 = db.Purchases.FirstOrDefault(p => p.PurchaseId == 1);
int total = p1.SellingItems.Sum(item => Convert.ToInt32(item.Price));
它不是更有效,因为它不会更快。但它更简洁。