获取
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));
}