我很难理解如何形成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/

10-11 02:02