我知道我可以在 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();