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

时间:2016-12-07 08:33:10

标签: 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 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...
        }
    }
}

我使用的操作链接:

@Html.ActionLink("#ISFor  " +
    @Model.LectureGig.Gender.GetEnumDisplayName() +" "+ "|", "EventsList", "Events", new
      {
          @query = Model.LectureGig.Gender.GetEnumDisplayName()
      }, null)

我得到的错误是:

  

LINQ to Entities无法识别方法&#39;布尔IsDefined(System.Type,System.Object)&#39;方法,并且此方法无法转换为商店表达式。

所以我需要做的是将GetEnumDisplayName中的值与我的枚举列表中的GetEnumDisplayName进行比较。 提前致谢

0 个答案:

没有答案