尝试比较枚举(转换为字符串)和从搜索中获得的字符串值时出现异常



获取

System.InvalidOperationException:"LINQ表达式"DbSet以可翻译的形式重写查询,或者通过插入对AsEnumerable((、AsAsyncEnumerale((的调用显式切换到客户端评估

在尝试比较两个值时-一个enum(通过转换为字符串(和一个字符串keyword,这是我从.NET 3 API 中的搜索表单中获得的

query = query.Where(it => it.EnumType.ToString().ToLower().StartsWith(keyword.ToLower()); 

感谢您的帮助。

不执行此

it => it.EnumType.ToString()

我建议你换一种方式,试着转换

keyword.ToLower()

以枚举。你可以试试这样的东西。

private static bool IsDefined<T>(string value)
{
return Enum.IsDefined(typeof(T), value);
}
public static T GetEnumByString<T>(string value)
{
return (T)Enum.Parse(typeof(T), value);
}

然后写出这样的表达式:

if (IsDefined<YourEnum>(keyword))
{
query = query.Where(it => it.EnumType == GetEnumByString<YourEnum>(keyword)); 
}

最新更新