Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 林奇集团;总和_C#_Linq - Fatal编程技术网

C# 林奇集团;总和

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,

我真的以为我和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,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, };