C# 林奇集团;总和
我真的以为我和linq相处得很好,直到现在,我有一对多的关系,我需要返回Jobitems(Jobitems.Cost)的总和C# 林奇集团;总和,c#,linq,C#,Linq,我真的以为我和linq相处得很好,直到现在,我有一对多的关系,我需要返回Jobitems(Jobitems.Cost)的总和 List jobItems=BLL.Inventory.JobItem.GetAllActive(强制重新加载); 列表作业=BLL.Inventory.Job.GetAllActive(强制重新加载); var getInvoicedItems2=来自作业中的j 将ji加入j.JobId上的jobItems等于ji.JobId 选择新建{JobCost=ji.Cost,
List jobItems=BLL.Inventory.JobItem.GetAllActive(强制重新加载);
列表作业=BLL.Inventory.Job.GetAllActive(强制重新加载);
var getInvoicedItems2=来自作业中的j
将ji加入j.JobId上的jobItems等于ji.JobId
选择新建{JobCost=ji.Cost,JobId=ji.JobId};
到目前为止,我已经做到了,但我不知道如何按ji对所有作业进行分组。JobId您可以使用组联接将所有作业项分组到一个集合中,然后计算该集合中所有成本的总和
var jobItems = BLL.Inventory.JobItem.GetAllActive(forceReload);
var jobs = BLL.Inventory.Job.GetAllActive(forceReload);
var query = from j in jobs
join ji in JobItems on j.JobId equals ji.JobId into items
select new
{
JobId = j.JobId,
JobCost = items.Sum(ji => ji.Cost),
};
似乎有效
var jobItems = BLL.Inventory.JobItem.GetAllActive(forceReload);
var jobs = BLL.Inventory.Job.GetAllActive(forceReload);
var query = from j in jobs
join ji in JobItems on j.JobId equals ji.JobId into items
select new
{
JobId = j.JobId,
JobCost = items.Sum(ji => ji.Cost),
};
var getInvoicedItems2 = from ji in jobItems
group ji by ji.JobId
into g
select new {JobId = g.Key, Cost = g.Sum(p => p.Cost)};
var getInvoicedItems = from j in jobs
from s in schedules
from i in invoices
from jj in getInvoicedItems2
where i.JobId == j.JobId && j.ScheduleId == s.ScheduleId && jj.JobId == j.JobId
select new { JobCost = jj.Cost, InvoiceDate = i.CreatedDate, Status = i.Status, };