C# 计算列表父实体的子实体之和

C# 计算列表父实体的子实体之和,c#,linq,C#,Linq,我必须计算有儿童服务的服务的总费用。 计算linq中实体总和的方法是: double totalcost = db.Services.Sum(s=>s.cost); 但我如何计算列表服务的总费用,例如: double totalfee=db.services.childservices.sum(s=>s.fee); 或者类似的? 我不想使用循环,因为一次计算1000个服务需要很长时间 我想您的模型如下所示: public class Service { public long

我必须计算有儿童服务的服务的总费用。 计算linq中实体总和的方法是:

double totalcost = db.Services.Sum(s=>s.cost);
但我如何计算列表服务的总费用,例如:

double totalfee=db.services.childservices.sum(s=>s.fee);
或者类似的?
我不想使用循环,因为一次计算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?
是为了防止数据库中没有任何可求和的数据。在这种情况下,结果将是
null

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

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

你能告诉我在我的场景中加入了什么吗?我使用DMBL,db是datacontext。db.Services.Join(?childservice)表描述和接受的输出指定我的表:服务{serviceID,serviceName,Cost},ChildServices{childserviceID,childserviceName,serviceID,Fee},我有一个服务列表,必须计算该服务的childservice总费用。谢谢。但是我需要计算一个服务列表,用于Ex 1000服务。上面的查询计算数据库中所有服务的子服务费用之和,然后将所有这些费用之和相加为
totalFee
。这不是你想要的吗?我更新了我的答案以涵盖更多的案例。请看看这是不是你想要的。非常感谢!!我会试试你的解决方案!
List<double?> totalFees = db.Services.Select(service => service.ChildServices.Sum(child => (double?)child.Fee)).ToList();
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();
var total = services.SelectMany(q => q.ChildServices).Distinct().Sum(p => p.Fee);
var childFeeSum=from parentService in db.Services select new { Fee=parentService.Sum(parent=>parent.ChildServices.Sum(f=>f.Fee))};