0

我目前正在使用以下内容返回一个列表

Test.GetPrevList(Current.Id, UserId);

此列表有 5 列 User ID First Name Last Name Department Week

我注意到的是,如果员工调换部门,他们会在名单上出现两次。

我想要做的是根据最近一周列选择最近的记录,使用Linq作为存储过程多次使用。

4

2 回答 2

3

您可以按周对用户进行排序,然后按 ID 对它们进行分组并选择每个组中的第一个用户:

var userList = Test.GetPrevList(Current.Id, UserId);
var users = userList.OrderByDescending(x => x.Week)
                    .GroupBy(x => x.UserId)
                    .Select(x => x.First());
于 2012-05-10T14:24:30.300 回答
1

也使用简单的 LINQ 调用Distinct()

Distinct 也可以与IEqualityComparer, like一起使用

IEnumerable<User> users =  users.Distinct(new UserComparer());

其中UserComparer实现了一些自定义比较逻辑的类。

于 2012-05-10T14:12:19.360 回答