[英]Aggregation in selectmany subquery using LINQ
我在MVC應用程序中實現了一些基本的排名功能,但是在執行此查詢時遇到了一些奇怪的錯誤:
該查詢的目的是找到總時間最長的前10名車手,即每個車手完成的所有圈數之和。
var topRiders = from rider in _riderDataProvider.GetAll()
orderby
(from session in rider.Sessions
from lap in session.Laps
select lap.LapTime.TotalSeconds)
.Sum()
descending
select rider;
var result = topRiders.Take(10).ToArray();
但是,執行查詢將引發:
System.Data.SqlClient.SqlException
:如果未將EXISTS引入子查詢,則只能在選擇列表中指定一個表達式。
坦白地說,我不知道此異常的含義或解決方法。 我是否缺少一個微妙的錯誤,或者我已經超出了LINQ to SQL的功能? (在這種情況下,我可以用SQL重寫查詢,但不希望這樣做。)
我會嘗試這樣的
var topRiders = from rider in _riderDataProvider.GetAll()
select new {
Rider = rider,
TotalTime = (from session in rider.Sessions
from lap in session.Laps
select lap.LapTime.TotalSeconds)
.Sum(),
}
var result = topRiders.OrderByDescending(r=>r.TotalTime)
.Select(r=>r.Rider)
.Take(10).ToArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.