如何在linq中使用多重连接?
我是linq新手,此查询正在运行,但我需要通过单个查询获得其中dlist.TransTypeID==0和其中dlist.TransTypeID==1的金额之和。有人能帮我吗?提前感谢这里有一个简化的示例,说明如何做到这一点。如果有必要,可以添加连接,但我不清楚为什么需要一些额外的连接值如何在linq中使用多重连接?,linq,join,lambda,linq-to-entities,sum,Linq,Join,Lambda,Linq To Entities,Sum,我是linq新手,此查询正在运行,但我需要通过单个查询获得其中dlist.TransTypeID==0和其中dlist.TransTypeID==1的金额之和。有人能帮我吗?提前感谢这里有一个简化的示例,说明如何做到这一点。如果有必要,可以添加连接,但我不清楚为什么需要一些额外的连接值 var abc1 = from dlist in db.DebtorTransactions.ToList() join war in db.Warranties
var abc1 = from dlist in db.DebtorTransactions.ToList()
join war in db.Warranties on dlist.ProductID equals war.Id
join ag in db.Agents on war.fldAgentID equals ag.pkfAgentID
join sr in db.SalesReps on war.fldSrId equals sr.pkfSrID
where dlist.TransTypeID == 1
select new
{
dlist.Amount,
dlist.TransTypeID,
name = ag.Name,
ag.pkfAgentID,
sr.pkfSrID,
salesnam = sr.Name
} into objabc
group objabc by new
{
objabc.TransTypeID,
objabc.name,
objabc.salesnam,
objabc.Amount
};
var amt1 = abc1.Sum(x => x.Key.Amount);
var abc2 = from dlist in db.DebtorTransactions.ToList()
join cjt in db.CarJackaTrackas on dlist.ProductID equals cjt.pkfCjtID
join ag in db.Agents on cjt.AgentID equals ag.pkfAgentID
join sr in db.SalesReps on cjt.SalesRepId equals sr.pkfSrID
where dlist.TransTypeID == 0
select new
{
dlist.Amount,
dlist.TransTypeID,
name = ag.Name,
ag.pkfAgentID,
sr.pkfSrID,
enter code here` salesnam = sr.Name
} into objabc
group objabc by new
{
objabc.TransTypeID,
objabc.name,
objabc.salesnam,
objabc.Amount
};
var amt2 = abc1.Sum(x => x.Key.Amount);
//var result1=
return View();
有几件事需要注意:
ToList()
。除非您希望将所有的DebtorTransaction放入内存,然后对这些结果运行Linq操作,否则您将希望忽略这一点,并让SQL处理聚合(它比C#好得多)dlist.TransTypeId
进行分组。如果需要,您仍然可以按更多字段分组,但在示例中不清楚为什么需要这些字段,所以我只做了一个简化示例有点不清楚你在问什么。您是否试图为
dlist.TransTypeID==0
或==1
的记录获取dlist.Amount
的总和。或者您想要两个金额结果,一个是TransTypeID==0
,另一个是TransTypeID==1
?是@Ocelot20我想要两个结果,其中TransTypeID==0 TransTypeID==1,只需一个查询。可能吗?
var transTypeAmountSums = (from dlist in db.DebtorTransactions
group dlist by dlist.TransTypeId into g
where g.Key == 0 || g.Key == 1
select new
{
TransTypeId = g.Key,
AmountSum = g.Sum(d => d.Amount)
}).ToDictionary(k => k.TransTypeId, v => v.AmountSum);
int transTypeZeroSum = transTypeAmountSums[0];
int transTypeOneSum = transTypeAmountSums[1];