我有一个名为UsedCars [10,5]
的数组它的数据看起来像
@PreAuthorize("#request.getRemoteAddr().equals(#request.getLocalAddr())")
我想得到每个汽车品牌相同颜色的总和 所以结果必须是
Car Brand Car Color Quantity
Alfa Romeo Red 5
Dodge Blue 1
Ferrari Yellow 12
Dodge Blue 3
Alfa Romeo Red 5
Dodge Red 18
我的想法是将所有这些来自UsedCars数组的数据添加到Datatable中然后我在DataTable中的所有行上进行循环,以在每一行上进行查询(select)并比较它的数据以求和数量并将它们全部放入数据表
减少资源使用和运行时间的任何简短方法?
答案 0 :(得分:1)
您可以使用LINQ。示例来自:https://code.msdn.microsoft.com/LINQ-Aggregate-Operators-c51b3869
List<Product> products = GetProductList();
var categories =
from p in products
group p by p.Category into g
select new { Category = g.Key, TotalUnitsInStock = g.Sum(p => p.UnitsInStock) };
答案 1 :(得分:0)
我试图为你找到一个很好的LINQ实现,但似乎很难将多维数组(object[,]
)与LINQ结合起来,因为提供的枚举器遍历数组的每个“单元”。
所以我想更好的方法是在字典中添加数量,如下所示:
Dictionary<string, Dictionary<string, int>> usedCars = new Dictionary<string, Dictionary<string, int>>();
for(int i=0; i<UsedCars.GetLength(0); i++)
{
string brand = UsedCars[i, 0].ToString();
string color = UsedCars[i, 1].ToString();
int quantity = (int)UsedCars[i,2];
if (!usedCars.ContainsKey(brand))
usedCars.Add(brand, new Dictionary<string, int>());
if (usedCars[brand].ContainsKey(color))
usedCars[brand][color] += quantity;
else
usedCars[brand][color] = quantity;
}
我认为您向我们展示的品牌,颜色和数量是object[10,5]
数组中每个“行”的前三个“单元格”。
生成的字典可以像这样使用:
Console.WriteLine($"Quantity of yellow ferraris: {usedCars["Ferrari"]["Yellow"]}");