var query = (from q in list.OrderByDescending(s => s.Score).Take(3).Select(s => s.Score).Distinct()
from i in list
where q == i.Score
select i).ToList();
编辑:
我不确定您想要的顺序,但是要更改顺序,可以在 select i 和 ToList() 之间放置一个OrderBy(s => s.Score)。 __
我无法检查我的linq子句将生成什么sql语句。但是我认为您的答案要好得多。您的问题也很好。我从来没有想过在linq中保持联系。;)
基本上,它仅从第一个列表中获得前3个得分,并将它们与整个列表进行比较,而我仅获得与第一个列表中的得分相等的那些得分。



