【发布时间】:2016-04-27 08:05:39
【问题描述】:
我在使用 LINQ to Entities 时遇到以下问题。我正在从数据库中选择记录,对它们进行分组,然后按 Id 降序对它们进行排序。然后我想选择第一项,但前提是数量是!= 0。我认为因为我必须使用 FirstOrDefault 我得到错误的结果但不知道如何纠正它。
数据库
现在这个查询会给我 ID 的 2 和 1 分组以及 4“分组”。我需要的是仅当 Quantity 为 != 0 并且不确定如何获得时才选择第一个项目。
data = DbContext.Items.Where(x.WarehouseId == 1)
.GroupBy(x => x.ItemCode, (key, g) => g.OrderByDescending(y => y.Id).FirstOrDefault())
.OrderBy(parameters.SortExpression)
.Skip(parameters.Start)
.Take(parameters.Length);
如果 WarehouseID 为 1,我只需要返回 ID 为 4 的行。任何帮助表示赞赏。
编辑:首先我需要按 ItemCode 分组,然后我将在上面的案例中有两个组。第一组是 1 和 2,第二组是 4。然后我按 Id 降序对它们进行排序,得到 (2, 1), (4)。然后我需要先从组中选择,但前提是 Quantity 为 != 0。如果 Quantity 为零,我不想从组中选择任何内容。
图片说明我需要什么。我被困在最后一步 Take FristFrom 每组仅当数量为!= 0
【问题讨论】:
标签: linq sql-server-2008 linq-to-entities