【发布时间】:2013-12-18 13:57:25
【问题描述】:
情况
我有对象列表,我当前使用的 linq 查询将每个项目计数两次。发生这种情况是因为数据是以这种方式设置的。每个采购订单号都有两行,我都在数。我只需要数一个。
PO Number Pallets
123 5
123 5
234 8
234 8
345 2
345 2
Linq 查询
Pallets = (from o in this.OrdersModel
where o.Pallets != null
select double.Parse(o.Pallets))
.Sum();
假设集合中的每个对象都是一个 OrderModel,当这个查询运行时,它将返回 30(所有行加起来)
期望的结果
正确的托盘数量为 15 个,每个 PO 托盘加起来一次。
相反,我想做的是选择不同的 po 编号,然后将托盘相加。在直接 SQL 中添加这个条件会很容易,但我对如何在 Linq 中做到这一点有一点想法。
问题
- 有没有一种快速简便的方法可以使用 Linq 选择不同的 PO 编号?
- 如果不是,那么完成此类事情的最佳方法是什么?
【问题讨论】:
-
你的意思是不同的吗?虽然我使用 lambda 形式,但有一个名为 Distinct() 的 linq 方法,所以我很难就您的查询提出建议
-
如果每个 PO 编号有两个条目,您怎么知道要在总和中包含两个条目?
-
好吧,如果你想要一个快速的解决方案:Pallets = Pallets /2;
-
@IanNelson 有几种方法,但最初我们还没有需要担心的数据结构。
标签: c# linq linq-to-objects