我目前正在使用以下内容返回一个列表
Test.GetPrevList(Current.Id, UserId);
此列表有 5 列
User ID
First Name
Last Name
Department
Week
我注意到的是,如果员工调换部门,他们会在名单上出现两次。
我想要做的是根据最近一周列选择最近的记录,使用Linq作为存储过程多次使用。
您可以按周对用户进行排序,然后按 ID 对它们进行分组并选择每个组中的第一个用户:
var userList = Test.GetPrevList(Current.Id, UserId);
var users = userList.OrderByDescending(x => x.Week)
.GroupBy(x => x.UserId)
.Select(x => x.First());
也使用简单的 LINQ 调用Distinct()
Distinct 也可以与IEqualityComparer
, like一起使用
IEnumerable<User> users = users.Distinct(new UserComparer());
其中UserComparer
实现了一些自定义比较逻辑的类。