LINQ to Entities存在以下问题。我从DB中选择记录,对它们进行分组,然后通过Id降序对它们进行排序。然后我想选择第一项,但只有当数量是!= 0.我想因为我必须使用FirstOrDefault我得到错误的结果但不知道如何纠正它。
DB
现在这个查询会给我ID 2和1分组和4“分组”。我需要的是只有当数量是!= 0时才选择FIRST项目,我不知道如何获得它。
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的行。任何帮助表示赞赏。
编辑:首先我需要groupBy ItemCode,然后我将在上面的案例中有两个组。第一组为1和2,第二组为4。然后我通过Id降序来命令它们,我得到(2,1),(4)。然后我需要先从组中选择,但仅当数量为!= 0.如果数量为零,我不想从组中选择任何内容。
图片澄清我需要什么。我坚持到最后一步只有当数量为!= 0
时才从每个组中取出FristFrom答案 0 :(得分:0)
var data = DbContext.Items
.Where(p => p.WarehouseId == 1)
.GroupBy(p => p.ItemCode, (key, items) => new { Key = key, Items = items, ItemsCountWithQuantityZero = items.Where(p => p.Quantity == 0).Count() })
.Where(p => p.ItemsCountWithQuantityZero == 0)
.Select(p => p.Items.OrderByDescending(q => q.Id).First());