【发布时间】:2021-06-08 17:04:24
【问题描述】:
我有很多硬件零件,其中每个零件都有名称和销量。
样本集合如下:
var parts = new List<(string name, int sales)>{
("Part A", 400),
("Part B", 600),
("Part A", 600),
("Part C", 400),
("Part D", 1500),
("Part B", 500),
("Part A", 475),
("Part B", 400),
("Part E", 700),
("Part A", 700),
};
此零件列表首先按销量排序:
var results = parts.OrderByDescending(p => p.sales).ToList();
/*
Results:
Part D - 1500
Part E - 700
Part A - 700
Part B - 600
Part A - 600
Part B - 500
Part A - 475
Part A - 400
Part C - 400
Part B - 400
*/
现在,我需要的第二个订单是将相同的零件名称放在一起,只要它们的销售额在彼此相差 100 的范围内,但保持第一个订单不变。
/*
Final results:
Part D - 1500
Part E - 700
Part A - 700
Part A - 600
Part B - 600
Part B - 500
Part B - 400
Part A - 475
Part A - 400
Part C - 400
*/
如何以有效的方式实现这一点,使其在大型数据集上也表现良好?
【问题讨论】:
-
请查看stackoverflow.com/questions/2779375/… 以获得答案。
-
你的低效尝试是什么?
-
前几天你不是问了几乎同样的问题吗? stackoverflow.com/questions/67869527/…
-
@Klamsi 另一个问题类似,但与这个问题的内容不同或不接近。谢谢。
标签: c#