LINQ 按排序分组

  • 本文关键字:排序 LINQ c# linq
  • 更新时间 :
  • 英文 :


我知道我可以在 LINQ 查询之外执行此操作,但我想知道是否可以在一个查询中执行此操作。

我想提交一个查询,在其中检索具有关联不同 ID 的最新项目。

假设我有以下对象:

{
    ItemDescription: 'Object 1',
    ItemDate: 1/1/2016,
    ItemTypeId: 1
},
{
    ItemDescription: 'Object 2',
    ItemDate: 1/1/2016,
    ItemTypeId: 2
},
{
    ItemDescription: 'Object 3',
    ItemDate: 3/1/2016,
    ItemTypeId: 1
},

我想要一个查询来返回对象 2 和 3(因为 3 是 ItemTypeId=1 的最新版本。

它应该(我认为)如下所示:

var recentItems = (from s in db
                   orderby s.ItemDate descending
                   group s by s.ItemTypeId into uniqueItems
                   select uniqueItems.FirstOrDefault()).ToList();

但是,FirstOrDefault会覆盖排序。

有什么想法吗?

这应该有效:

var recentItems = (from s in db
                   group s by s.ItemTypeId into uniqueItems
                   select uniqueItems.OrderByDescending(x=> x.ItemDate ).FirstOrDefault())
                                                                        .ToList();

相关内容

  • 没有找到相关文章

最新更新