internal IEnumerable<Setting> Search(string text)
{
Func<string, string, bool> searchCI =
(x, y) => x.IndexOf(y, StringComparison.OrdinalIgnoreCase) >= 0;
return _dc.Settings.Where(
x => searchCI(x.key, text)
|| searchCI(x.description, text) );
}
此代码生成异常:{“Method'System.Object DynamicInvoke(System.Object [])'没有支持的SQL转换。”}
帮助修复,PLZ
UPD:
internal IEnumerable<Setting> Search(string text)
{
return _dc.Settings.Where(
x => x.key.IndexOf(text).StringComparison.OrdinalIgnoreCase) >= 0
|| x.description.IndexOf(text).StringComparison.OrdinalIgnoreCase) >= 0;
}
这可行,但重复的代码。如何使子表达式可以编译成sql(如果可能的话)?
答案 0 :(得分:0)
出现此问题是因为EF不知道如何以本机MSSQL查询格式转换lambda表达式。
解决方案:
internal IEnumerable<Setting> Search(string text)
{
Func<string, string, bool> searchCI =
(x, y) => x.IndexOf(y, StringComparison.OrdinalIgnoreCase) >= 0;
return _dc.Settings.ToList().Where(
x => searchCI(x.key, text)
|| searchCI(x.description, text) );
}
您可以使用SQL Server配置文件来获取结果查询。