我知道我可以在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
会覆盖排序。
有什么想法吗?
答案 0 :(得分:2)
这应该有效:
var recentItems = (from s in db
group s by s.ItemTypeId into uniqueItems
select uniqueItems.OrderByDescending(x=> x.ItemDate ).FirstOrDefault())
.ToList();