【发布时间】:2019-08-16 20:28:42
【问题描述】:
我想知道为什么我的 LINQ GroupBy 语句实际上没有正确分组我的对象集。我仍然会得到我开始使用的所有对象,即使它们共享相同的 Key。
这是我尝试过的代码:
var snapshot = snapshotService.GetSnapshot(siids, warehouseId)
.GroupBy(a => new
{
a.SIId,
a.WarehouseId,
a.Treatment,
a.UnitOfMeasure
})
.Select(a => new Snapshot
{
SIId = a.Key.SIId,
WarehouseId = a.Key.WarehouseId,
Treatment = a.Key.Treatment,
UnitOfMeasure = a.Key.UnitOfMeasure,
TotalAmount = a.Sum(sum => sum.TotalAmount),
Available = a.Sum(sum => sum.Available),
Unavailable = a.Sum(sum => sum.Unavailable)
}).ToList();
键是 SIId、WarehouseId、Treatment 和 UnitOfMeasure。我想为每个组合键设置一个返回集。相反,我为每个组合键获得了多个返回集,这太烦人了! TotalAmount、Available 和 Unavailable 也有不同的值。就好像 GroupBy 声明完全被惹恼了一样。
例如:如果我有一个对象
{SIId = 1, WareHouseId = 1, Treatment = 1, UnitOfMeasure = 1,
TotalAmount = 1, Available = 1, Unavailable = 1}
{SIId = 1, WareHouseId = 1, Treatment = 1, UnitOfMeasure = 1,
TotalAmount = 2, Available = 2, Unavailable = 2}
我希望回报是:
{SIId = 1, WareHouseId = 1, Treatment = 1, UnitOfMeasure = 1,
TotalAmount = 3, Available = 3, Unavailable = 3}
但是我得到了复合列表
{
{SIId = 1, WareHouseId = 1, Treatment = 1, UnitOfMeasure = 1,
TotalAmount = 1, Available = 1, Unavailable = 1},
{SIId = 1, WareHouseId = 1, Treatment = 1, UnitOfMeasure = 1,
TotalAmount = 2, Available = 2, Unavailable = 2}
}.
什么给了?
【问题讨论】:
-
您如何查看这些结果?如果您在调试器中查看,您可能实际上看不到分组数据,因为它只会在您枚举它们时以组的形式为您提供结果。
-
邮递员返回
-
@NICOBHHCCoder 邮递员不是您调试事物的方式。
-
我没有调试...
-
您收到一个 http 响应,因此您的组是元素对象而不是文本值。使用:a.SIId.Text、a.WarehouseId.Text、a.Treatment.Text、a.UnitOfMeasure.Text