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