代码之家  ›  专栏  ›  技术社区  ›  Justeasy StackAttacka

需要从字典中删除和排序键号和颜色项

  •  -1
  • Justeasy StackAttacka  · 技术社区  · 8 年前

    我有一本字典,像:

    var map = new Dictionary<int, ColorType>();
    

    其中ColorType是枚举{红、黄、白}

    它与一组数字配对,如:

    var lstNumbers = Enumerable
                .Range(1, 100).OrderBy(n => Guid.NewGuid().GetHashCode())
                .ToArray();
    

    我需要执行以下操作:

    1. 删除所有红色偶数
    2. 删除所有黄色奇数
    3. 删除所有可被3整除的白色数字
    4. 根据数字和颜色(红色)升序排序列表

    这是一种有效的方法吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   L.B    8 年前

    对于前3个:

    foreach(KeyValuePair<int, ColorType> entry in map.ToList()) {
    
        if (entry.Key % 2 == 0 && entry.Value == ColorType.Red) { // Even and Red
            map.Remove(entry.Key);
        }
    
        if (entry.Key % 2 == 1 && entry.Value == ColorType.Yellow) { // Odd and Yellow
            map.Remove(entry.Key);
        }
    
        if (entry.Key % 3 == 0 && entry.Value == ColorType.White) { // Divisible by 3 and White
            map.Remove(entry.Key);
        }
    }
    

    至于对字典进行排序,可以找到答案 here