Linq:与 GroupBy 和 SelectMany 一起添加额外条件

卡卡1234

继续我的上一篇文章:SQL 查询:仅显示每个集合中的最新 Id

我有以下 SQL 表:

Name       Description   Id   UserId   CreatedDate

UserSet1   Desc1         0    Abc      06/01/2018
UserSet1   Desc2         1    Abc      06/01/2018
UserSet1   Desc4         2    Def      06/02/2018
UserSet2   Desc for 2    5    NewUser  06/04/2018
UserSet2   Desc for 2    7    NewUser  06/19/2018

我想从上表中提取的只是每个 Name 的最新 Id,以便我可以获得以下输出

Name      Description    Id    UserId    CreatedDate

UserSet1  Desc1          0     Def       06/01/2018
UserSet1  Desc2          2     Def       06/01/2018
UserSet2  Desc for 2     7     NewUser   06/19/2018

由于 Id 2 和 7 是表中 UserSet1 和 UserSet2 的最新条目,我想显示它而不是表中的所有条目。现在这已通过以下 LINQ 代码解决。现在我还有另一个要求,也就是显示所有 ID 为零的行(见上面的预期结果)。

var results = response
  .GroupBy(row => row.Name)
  .SelectMany(g => g
     .OrderByDescending(row => row.Id)
     .Take(1));

我如何修改我上面的 Linq,以便它显示所有最高的无名称 ID 以及任何为零的 ID。

谢谢

沙里夫
  var results = response.GroupBy(row => row.Name)
                        .SelectMany(g => g
                        .OrderByDescending(row => row.Id)
                        .Take(1))
                      .Union(response.Where(x=>x.Id== 0));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章