我很难理解如何形成LINQ查询来执行以下操作:
我有一个CallLogs表,我想返回一个代表最长持续时间的调用的结果。
该行如下所示:
同一RemoteParty可以有多行,每行代表特定持续时间的调用。我想知道哪个RemoteParty总持续时间最长。
使用LINQ,我已经走到了这一步:
var callStats = (from c in database.CallLogs
group c by c.RemoteParty into d
select new
{
RemoteParty = d.Key,
TotalDuration = d.Sum(x => x.Duration)
});
所以现在我有了一个分组的结果,其中包含每个RemoteParty的总持续时间,但是我需要最大的单个结果。如何修改查询以实现此目的?
最佳答案
订购结果并返回第一个。
var callStats = (from c in database.CallLogs
group c by c.RemoteParty into d
select new
{
RemoteParty = d.Key,
TotalDuration = d.Sum(x => x.Duration)
});
callStats = callStats.OrderByDescending( a => a.TotalDuration )
.FirstOrDefault();
关于c# - C#LINQ查询-分组依据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/499578/