I’m implementing some basic ranking functionality in my MVC application,
but I’m running across some bizarre errors when executing this query:
The intent of this query is to find the top 10 riders with the longest
overall time— ie the sum of all laps completed by each rider.
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();
However, executing the query throws:
System.Data.SqlClient.SqlException: Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
Frankly, I have no idea what this exception means or how to fix it.
Is there a subtle bug I am missing, or have I exceeded the power of LINQ to SQL?
(I am able to rewrite the query in SQL if that is the case, but would prefer not to.)
I would try something like this