如何在c#中将字符串转换为Flags枚举格式

本文关键字:转换 Flags 枚举 格式 字符串 | 更新日期: 2023-09-27 18:15:38

我有这个enum:

[Flags]
public enum Countries
{
    None    = 0,
    USA     = 1,
    Mexico  = 2,
    Canada  = 4,
    Brazil  = 8,
    Chile   = 16
}

我接收的输入字符串像这样:

string selectedCountries = "Usa, Brazil, Chile";

如何转换它(在c#中)回:

var myCountries = Countries.Usa | Countries.Brazil | Countries.Chile;

如何在c#中将字符串转换为Flags枚举格式

Use enumt . parse .

Countries c = (Countries)Enum.Parse(typeof(Countries), "Usa, Brazil...");

这似乎适用于我,假设您的国家字符串由逗号分隔:

private static Countries ConvertToCountryEnum(string country)
        {
            return country.Split(',').Aggregate(Countries.None, (seed, c) => (Countries)Enum.Parse(typeof(Countries), c, true) | seed);
        }

实际上我意识到这比我想象的要容易。我所需要做的就是将那个字符串转换为int,在我的例子中,或者一般的long,并将其强制转换为nations。它将把该数字转换为期望的格式。换句话说:

(Countries) 25 = Countries.Usa | Countries.Brazil | Countries.Chile;