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

时间:2018-06-15 13:39:54

标签: c# linq

继续上一篇文章: SQL Query: Display only latest Id from each set

我有以下SQL表:

configurations {
 all*.exclude group: 'com.android.support', module: 'support-v4'
}

我想从上表中提取的只是每个名称的最新ID,以便我可以得到以下输出

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

自Id 2& 7是UserSet1&表中的最新条目。 UserSet2,我想显示而不是表中的所有条目。现在用以下LINQ代码解决了这个问题。现在我还有另一个要求,也要显示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

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

由于

1 个答案:

答案 0 :(得分:1)

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