如何在不区分大小写c#的情况下检查枚举值中的“包含”?

我需要检查Enum中是否存在字符串值,或者不使用Contains

public enum Days
{
    Monday = 1,Tuesday = 2,Wednesday = 3,Thursday = 4,Friday = 5,Saturday = 6,Sunday = 7
}

public class ResultObj
{
   public int Id { get; set; }
   public string Name { get; set; }
}

var filter = "Wed";
var dayList = Enum.Getvalues(typeof(Days))
               .Cast<Days>()
               .Where(x => Enum.IsDefined(typeof(Days),filter))
               .Select(d => new ResultObj
               {
                   Id = (int)d,Name = d.ToString()
               }).ToList();

如果给定“星期三”的意思,我需要一个dayList结果作为{ Id = 3,Name = Wednesday }

如果给定过滤器为“星期三”,则我需要dayList结果为{ Id = 3,Name = Wednesday }

如果给定过滤器为“星期三”,则我需要一个dayList结果为{ Id = 3,Name = Wednesday }

如果给定过滤器为“ dnes”,则我需要一个dayList结果为{ Id = 3,Name = Wednesday }

如果给定过滤器为“ xyx”,则dayList计数应为零。

yezhiyang 回答:如何在不区分大小写c#的情况下检查枚举值中的“包含”?

您可以使用Where子句,例如:

.Where(x => Enum.GetName(typeof(Days),x).ContainsCaseInsenitive(filter))

其中ContainsCaseInsensitive是字符串的扩展方法:

// adapted from: https://stackoverflow.com/a/15464440/5133585
public static bool ContainsCaseInsensitive(this string a,string b) =>
    CultureInfo.InvariantCulture.CompareInfo.IndexOf(a,b,CompareOptions.IgnoreCase) >= 0;
,

您可以稍微重写TextFormField方法链,从Linq值数组中选择一个字符串值,并检查Enum名称是否包含过滤器(不区分大小写)。然后选择一个Enum并将ResultObj的值转换回

Enum
本文链接:https://www.f2er.com/2402985.html

大家都在问