【发布时间】:2018-09-15 19:53:20
【问题描述】:
我有一个像这样的字典:
var map = new Dictionary<int, ColorType>();
其中 ColorType 是一个枚举 { Red, Yellow, White }
它与一个数字数组配对,例如:
var lstNumbers = Enumerable
.Range(1, 100).OrderBy(n => Guid.NewGuid().GetHashCode())
.ToArray();
我需要做以下事情:
- 删除所有红色的偶数
- 删除所有黄色的奇数
- 删除所有可被 3 整除的白色数字
- 根据数字升序对列表进行排序,然后颜色(红色
这是一种有效的方法吗?
【问题讨论】:
-
您的代码效率低下有什么观察结果吗?如果有效,有什么问题?
-
我不明白
lstNumbers与这个问题的任何内容有什么关系。其中一些操作是针对列表和字典的吗? -
您将无法获得比第 4 步中使用的排序方法更高效的方法。排序是一种众所周知的效率,并且没有已知的最快方法的改进。步骤 1-3 都是 O(n),因此与流程的效率无关。
-
我考虑过使用它,但不确定这是否是正确的方法。 toRemove = lstNumbers.Array .Select(x => new KeyValuePair
((int)x.lstNumbers, x.ColorType)) .ToList();
标签: c# arrays dictionary key removeall