我想分组&在查询构建器表达式中排序。以下查询让我接近我想要的但订单依据似乎不起作用。
我拥有的是一个具有唯一ID的对象,但有些会有一个共同的versionId。我想获得相同versionId的最后编辑项目。因此,每个版本ID只有一个项目,我希望它是最后编辑的项目。
IQueryable<Item> result = DataContext.Items.Where(x => (x.ItemName.Contains(searchKeyword) ||
x.ItemDescription.Contains(searchKeyword))
.GroupBy(y => y.VersionId)
.Select(z => z.OrderByDescending(item => item.LastModifiedDateTime).FirstOrDefault());
编辑:我并不关心结果集的顺序,我真的只关心分组中的哪个项目被返回。我想确保返回versionId组中最后编辑的项目。
答案 0 :(得分:2)
您的z
参数包含各个组对象。
通过调用OrderBy
内的Select
,您可以在每个组中订购商品,但不会订购商品组。
您还需要在OrderBy
之后拨打Select
,如下所示:
.Select(z.OrderByDescending(item => item.LastModifiedDateTime).FirstOrDefault())
.Where(item => item != null)
.OrderByDescending(item => item.LastModifiedTime)