【问题标题】:Selecting Distinct Rows Using Linq使用 Linq 选择不同的行
【发布时间】:2012-05-10 14:10:25
【问题描述】:

我目前正在使用以下方法返回一个列表

Test.GetPrevList(Current.Id, UserId);

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

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

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

【问题讨论】:

  • 请提供更多代码。请问具体结构。 "List has 4 Columns"。这是什么?

标签: c# linq


【解决方案1】:

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

var userList = Test.GetPrevList(Current.Id, UserId);
var users = userList.OrderByDescending(x => x.Week)
                    .GroupBy(x => x.UserId)
                    .Select(x => x.First());

【讨论】:

    【解决方案2】:

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

    distinct也可以和IEqualityComparer一起使用,比如

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

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

    【讨论】:

    • 这无助于选择最新的记录。
    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多