我有一类变量。为了简单起见,我将以汽车库存为例。所以在我的班上我有变量说: -
Car Manufacturer
Car Colour
Car Quantity
我的班级看起来像这样..(但可能有数百行)
BMW, Black, 2
Mercedes, White, 1
Honda, Green, 3
BMW, Red, 1
我需要创建一个合并制造商和数量的列表,但是将颜色分开,例如新列表应该类似于: -
BMW, 3
Black
Red
Mercedes, 1
White
Honda, 3
Green
有人可以帮忙解释最好的解决方法吗?
答案 0 :(得分:0)
假设您不讨厌单行并了解LINQ的工作原理,以下表达式将返回Tuple(Of String, Integer)
数组,其中Item1
将具有制造商名称和Item2
将拥有他们的汽车总数:
YourCarsList.GroupBy(Function(r) r.Manufacturer).Select(Function(r) New Tuple(Of String, Integer)(r.Key, r.Sum(Function(r2) r2.Quantity))).ToArray()
请注意,您在问题中显示的输出是 console-ish ,并且无法通过函数或表达式以该形式返回。如果你真的想将它打印为文本输出,你可以像这样扩展上面的表达式:
Dim Res = YourCarsList.GroupBy(Function(r) r.Manufacturer)
For Each R In Res
output.AppendLine(R.Key, r.Sum(Function(r) r.Quantity))
For Each Clr In R.Select(Function(r) r.Colour).Distinct().OrderBy(Function(r) r)
output.AppendLine(Clr)
Next
Next