【发布时间】:2014-04-30 13:59:46
【问题描述】:
我有一个对象列表(称它们为 salesItems 类型)假设这些项目有 50 个属性,其中名称、价格、数量是 3 个)。我想知道如何使用以下逻辑将列表合并在一起,按名称组合任何 salesItems:
如果有多个同名的salesOrders:
- 将它们组合成一个具有相同名称的 SalesOrder
- 将数量设置为数量之和
- 使用第一个值设置价格和所有其他属性
我想使用 linq。我意识到我可以为每个 c# 循环使用一个 big 。
如果列表中还有其他项目,我也希望遵循类似的逻辑。
EX: A salesOrder list with (A,B,C,D,E)
A: Name=ball Price= 2.24 Quantity=1 (other values = bla bla)
B: Name= ball Price = 15.33 Quantity=3 (other values)
c: Name= bat Price = 22.14 Quantity=3 (other values)
D: Name= bat Price= 19.22 Quantity=2 (other values)
E: Name = ball Price=4.32 Quantity=2 (other values)
结果列表我想要列表 (A,C) A 中的 2 个销售订单:名称=球价格= 2.24 数量 = 6(其他值 = 来自 a 属性的 bla bla) c:名称 = bat 价格 = 22.14 数量 = 5(来自 c 的其他值 属性)
【问题讨论】:
-
你为什么不展示你的
SalesItem类和一个示例列表?这样会更容易理解。list (A,C)的伪“代码”只是令人困惑。 -
看看 Linq 的 Intersect 方法... GroupBy 也可以在这里为您提供 Distinct() 组合...虽然您想要做的简短回答是您不会逃脱从循环... LINQ 就是这样:在幕后循环...但是您可以使用 LINQ 对项目进行分组并在较小的数据集上执行更改...
-
您是否尝试过自己解决问题?分享你的代码!
标签: c# linq collections