使用Linq选择不同的行

时间:2012-05-10 14:10:26

标签: c# linq

我目前正在使用以下

返回一个列表
Test.GetPrevList(Current.Id, UserId);

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

我注意到,如果一名员工改变了部门,他们将在名单上出现两次。

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

2 个答案:

答案 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是一个实现一些自定义比较逻辑的类。