0
我对LINQ to Entities有以下问题。我从DB中选择记录,将它们分组,然后按Id降序排列。然后,我想选择第一项,但只有当数量是!= 0时。我想因为我必须使用FirstOrDefault,我得到错误的结果,但不知道如何纠正它。LINQ to Entities GroupBy,OrderByDescending,FirstOrDefault
DB
现在,这个查询会给我ID的2和1编组和4 “分组”。我需要的是仅在Quantity =!= 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时。如果数量为零,我不想从组中选择任何内容。
图片来澄清我需要什么。我卡上的最后一步采取FristFrom每个组只有数量= 0
首先我需要GROUPBY ItemCode ,那么我会为上面的情况设置两个组。第一组为1和2,第二组为4。然后我通过Id降序来订购它们,我得到(2,1),(4)。然后我需要首先选择,但只有当数量是!= 0时。如果数量为零,我不想从组中选择任何东西。 –
在你的第二种情况下,当你得到2和4时,你只能得到Ids 1和4,看到2有数量0并且忽略它,所以你最后只剩下4。 –