你怎么能只拿Linq的最后一个结果

时间:2013-12-30 16:43:33

标签: c# linq entity-framework

好的,我没有把标题说得对。 我会解释一下。

我有一张桌子上有一些锻炼结果。大多数情况下,你有一个UserID,一个ExerciseID,结果,结果是什么时候。使用EF和Linq访问该表。

我想获得给定ExerciseID的所有结果,并且只获取每个用户的最后一个结果。当然使用LINQ。

如何实现这一目标?

我的代码(取得所有结果)如下:

from e in models.ExerciseUserResults
where e.ExerciseID == ExerciseId
select e

此代码段将获取所有用户的所有结果。

编辑:一个例子

假设我有这张桌子

{<UserID>,<Result>} - {1,100},{1,200},{2,150},{2,250} - 使用JSON表示法,没有所有字段。

如果查询正确 - 我会得到[{1,200},{2,250}]

由于

1 个答案:

答案 0 :(得分:6)

您希望每个用户拥有一个这一事实非常清楚您希望按用户对查询进行分组。从那里,您可以将每个组投影到一个项目中:

var query = from e in models.ExerciseUserResults
    where e.ExerciseID == ExerciseId
    group e by UserID into usersExercises
    select usersExercises.Last();