【问题标题】:How to populate Dictionary object with entries based on certain condition?如何根据特定条件使用条目填充 Dictionary 对象?
【发布时间】:2015-02-19 13:46:14
【问题描述】:

我正在尝试学习 C#。我想创建一个字典,其第 1,8,15...167 个键应该是 JUPITER,2,9,16 .... 等等应该是 MARS 等。是吗可能更简单的方法吗?谢谢。

     public enum Planets : int { JUPITER = 1, MARS, SUN, VENUS, MERCURY, MOON, SATURN }
     Dictionary<int, string> Dict = new Dictionary<int, string>();

     for (int key = 1; key < 169; key++)
        {
            if (key % 7 == 1)
            {
                Dict.Add(key, Planet.JUPITER.ToString());
            }
            else if (key % 7 == 2)
            {
                Dict.Add(key, Planet.MARS.ToString());
            }
            else if (key % 7 == 3)
            {
                Dict.Add(key, Planet.SUN.ToString());
            }
            else if (key % 7 == 4)
            {
                Dict.Add(key, Planet.VENUS.ToString());
            }
            else if (key % 7 == 5)
            {
                Dict.Add(key, Planet.MERCURY.ToString());
            }
            else if (key % 7 == 6)
            {
                Dict.Add(key, Planet.MOON.ToString());
            }
            else
            {
                Dict.Add(key, Planet.SATURN.ToString());
            }

【问题讨论】:

  • Planet.MOON 那不是月亮。这是一颗行星。
  • :) 大约是 :lunarium.co.uk/planets/hours.jsp

标签: c# dictionary for-loop enums conditional


【解决方案1】:

如何在for 中增加7 并在Add 中使用偏移量:

 for (int key = 1; key < 169; key += 7)
 {
        Dict.Add(key + 0, Planet.JUPITER.ToString());
        Dict.Add(key + 1, Planet.MARS.ToString());
        Dict.Add(key + 2, Planet.SUN.ToString());
        Dict.Add(key + 3, Planet.VENUS.ToString());
        Dict.Add(key + 4, Planet.MERCURY.ToString());
        Dict.Add(key + 5, Planet.MOON.ToString());
        Dict.Add(key + 6, Planet.SATURN.ToString());
 }

或者只是使用key++ 并运行直到您满意为止:

 int key = 1;
 while ( key < 169 )
 {
        Dict.Add(key++, Planet.JUPITER.ToString());
        Dict.Add(key++, Planet.MARS.ToString());
        Dict.Add(key++, Planet.SUN.ToString());
        Dict.Add(key++, Planet.VENUS.ToString());
        Dict.Add(key++, Planet.MERCURY.ToString());
        Dict.Add(key++, Planet.MOON.ToString());
        Dict.Add(key++, Planet.SATURN.ToString());
 }

在和平冥王星中旋转。

【讨论】:

  • 非常优雅的解决方案,@HABO!
  • 谢谢。对我很有帮助。
  • 为了更清楚@PhotonPoint,我已经编辑了您的问题。祝你的项目好运(虽然我不太确定 SUN/MOON 是否属于此列表)。最好的问候,
猜你喜欢
  • 1970-01-01
  • 2020-09-06
  • 2021-06-04
  • 1970-01-01
  • 2016-08-06
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多