C# 将Enum DisplayName与搜索中的字符串进行比较

C# 将Enum DisplayName与搜索中的字符串进行比较,c#,asp.net-mvc,linq,enums,C#,Asp.net Mvc,Linq,Enums,我有一个枚举值,我也使用“displayname”,我想将它作为参数传递给搜索,到目前为止我所做的是: public enum Gender { [Display(Name = "Man & Weman")] EvryOne = 0, [Display(Name = "Man")] Man = 1, //Etc... } public static class EnumExtensions { public static string G

我有一个枚举值,我也使用“displayname”,我想将它作为参数传递给搜索,到目前为止我所做的是:

public enum Gender
{
    [Display(Name = "Man & Weman")]
    EvryOne = 0,
    [Display(Name = "Man")]
    Man = 1,
    //Etc...
}

public static class EnumExtensions
{
    public static string GetEnumDisplayName(this Enum enumValue)
    {
        return enumValue.GetType()
                        .GetMember(enumValue.ToString())
                        .First()
                        .GetCustomAttribute<DisplayAttribute>()
                        .GetName();
    }


    public ActionResult EventsList(string query = null)
    {

        if (!string.IsNullOrWhiteSpace(query))
        {
            query = query.Trim();
            upCommingLecture = upCommingLecture
                .Where(g =>
                    g.Address.Contains(query) ||
                    Enum.IsDefined(typeof(Gender), query) ||
                    //Etc...
        }
    }
}
我得到的错误是:

LINQ to Entities无法识别方法“Boolean IsDefined(System.Type,System.Object)”方法,并且无法将此方法转换为存储表达式

因此,我需要做的是将
GetEnumDisplayName
中的值与枚举列表中的
GetEnumDisplayName
进行比较。
提前感谢

您应该在查询外部执行
Enum.IsDefined
并使用布尔字段/属性将其传递给查询,因为
IsDefined
方法无法转换为等效的SQL查询。我不确定我知道怎么做,我没有bool gander=Enum.IsDefined(typeof(Gender),query),但是如何在Where中使用它呢?请尝试使用
bool
字段更改
IsDefined
方法:
upcombinglecture=upcombinglecture.Where(g=>g.Address.Contains(query)| | gander | |//等)。它应该生成适当的SQL查询,以在LINQ中传递给实体。您应该在查询外部执行
Enum.IsDefined
,并使用布尔字段/属性将其传递给查询,因为
IsDefined
方法无法转换为等效的SQL查询。我不确定我知道怎么做,我做了bool gander=Enum.IsDefined(typeof(Gender),查询),但是如何在Where中使用它呢?请尝试使用
bool
字段更改
IsDefined
方法:
upcombinglecture=upcombinglecture.Where(g=>g.Address.Contains(query)| | gander | |//等)。它应该生成适当的SQL查询以在LINQ中传递给实体。
@Html.ActionLink("#ISFor  " +
    @Model.LectureGig.Gender.GetEnumDisplayName() +" "+ "|", "EventsList", "Events", new
      {
          @query = Model.LectureGig.Gender.GetEnumDisplayName()
      }, null)