【问题标题】:Find string in enum在枚举中查找字符串
【发布时间】:2015-06-18 14:32:37
【问题描述】:

有没有办法像这样在枚举中查找字符串的一部分:

Status.Find("InStock");

public enum Status
{
    Unknown,
    InStock,
    InStockReserved,
    Taken,
    TakenReserved,
    Spent,
}

然后得到各自的int值。 就像在 List 的 Find 命令中一样:

list.Find(x => x.Name.Contains("InStock")));

【问题讨论】:

  • 找到多个枚举值时会发生什么 - 在您的示例中,可能有 2 个结果。
  • 这样使用枚举是个坏主意。您可以通过调用Enum.GetNames(typeof(Status)) 来获取枚举中所有名称的列表,但无论如何您都不应该使用这样的枚举。

标签: c# enums


【解决方案1】:

听起来你想要这样的东西:

var integers = Enum.GetValues(typeof(Status))
                   .Cast<Status>()
                   .Where(status => status.ToString().Contains("InStock"))
                   .Select(status => (int) status);

【讨论】:

【解决方案2】:

枚举给出整数返回值。所以你有两种可能性:

  1. 仅基于枚举类型变量匹配。

例如:

list.Find(x => (x.StockType == Stock.InStock));
  1. 定义一个返回相应字符串形式的函数:

    字符串 ToEnumString(Stock stockType) { 如果(股票类型 == Stock.InStock) 返回“库存”;

    // TODO: define other cases
    

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    相关资源
    最近更新 更多