gpt4 book ai didi

c# - 计算列表父实体的子实体的总和

转载 作者:行者123 更新时间:2023-11-30 16:53:41 24 4
gpt4 key购买 nike

我必须计算具有子服务的服务的总费用。linq中计算Entities总和的方法是:

double totalcost = db.Services.Sum(s=>s.cost);

但是我如何计算列表服务的总费用,例如:

double totalfee=db.services.childservices.sum(s=>s.fee);

或者类似的东西?我不想使用 while 循环,因为我必须一次计算 1000 个服务,这会花费很长时间!

最佳答案

我想你的模型是这样的:

public class Service
{
public long Id { get; set; }
public double Cost { get; set; }
public ICollection<ChildService> ChildServices { get; set; }
}

public class ChildService
{
public long Id { get; set; }
public double Fee { get; set; }
}

然后您可以这样做来计算所有服务的总费用:

double? totalFee = db.Services.Sum(service => service.ChildServices.Sum(child => (double?)child.Fee));

double? 用于防止数据库中没有可求和的情况。在这种情况下,结果将为 null

如果您想要所有服务的总费用列表,您可以:

List<double?> totalFees = db.Services.Select(service => service.ChildServices.Sum(child => (double?)child.Fee)).ToList();

如果您想要零而不是 null,只需将上述查询替换为:

double totalFee = db.Services.Sum(service => service.ChildServices.Sum(child => (double?)child.Fee)) ?? 0;
List<double> totalFees = db.Services.Select(service => service.ChildServices.Sum(child => (double?)child.Fee) ?? 0).ToList();

关于c# - 计算列表父实体的子实体的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31200040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com