簡體   English   中英

如何在C#中從字符串轉換為Flags枚舉格式

[英]How to convert from a string to a Flags enum format in C#

我有這個枚舉:

[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;

使用Enum.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形式),並將其轉換為Countrys。 它將將該數字轉換為預期的格式。 換一種說法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM