C# 使用 For 循环显示枚举名称

C# Displaying Enum Names Using For Loop

初学者问题:

目前(出于测试目的)此游戏有两个游戏棋子,名称如下:

public enum JapaneseUnit
    {
        None,
        JapaneseDesDivOne,//playing piece
        JapaneseCruDivOne,//playing piece
        NotAllowed,
    }

两个棋子如下例(我要找的字符串是"JapaneseDesDivOneJapaneseCruDivOne")

            string side2ForceType;
            if (Side2Army > -1)
            {
                var side2Army = campaign.Armies[Side2Army];
                var japaneseArmiesInArea = campaign.ActiveArmies().Where(x => x.Location == 
                side2Army.Location && side2Army.Realm == 0).ToList(); 
                //List of all Japanese armies in area (in this case it is two)
                

                for (var unitKey = 0; unitKey < japaneseArmiesInArea.Count(); unitKey++) 
                //count == 2
                
                {
                    side2ForceType = japaneseArmiesInArea[unitKey].JapaneseUnit.ToString();  
                    //Output is "None", I'm looking for "JapaneseDesDivOneJapaneseCruDivOne"
                }

             }

将来会有更多的演奏曲目,所以虽然以下内容在技术上是正确的并且更接近我正在寻找的内容,但它是行不通的。我想排除“None”输出,这就是我想使用循环的原因:

          
                side2ForceType = japaneseArmiesInArea[0].JapaneseUnit.ToString() + 
                                 japaneseArmiesInArea[1].JapaneseUnit + 
                                 japaneseArmiesInArea[2].JapaneseUnit + 
                                 japaneseArmiesInArea[3].JapaneseUnit + etc etc; 
                        //Output is JapaneseDesDivOneJapaneseCruDivOneNoneNone
 

我确定我遗漏了一些基本的东西。

这样的事情会实现您想要做的事情吗?

string.Join("", japaneseArmiesInArea.Where(a => a.JapaneseUnit != JapaneseUnit.None)
    .Select(a => a.JapaneseUnit.ToString()));

这是假设您在 japaneseArmiesInArea 中的 任何 项目确实将 JapaneseUnit 的值设置为 None 以外的值.如果不是,则说明您在其他地方有问题。