Eri*_*ric 1 c# linq where-clause entity-framework-5
我正在运行一个简单的LINQ查询:
var user = (from u in context.Users
where u.Email == dictionary["email"]
select u).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到这个例外:
LINQ to Entities无法识别方法'System.String get_Item(System.String)'方法,并且此方法无法转换为商店表达式.
如果我使用这个中间步骤,它工作正常.
String myDictionaryItem = dictionary["email"];
var user = (from u in context.Users
where u.Email == myDictionaryItem
select u).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
看起来有点奇怪.Net无法想得更快一点.
(免责声明:可能是一些拼写错误,我更改了一些变量名称)
Linq尝试将您的where子句转换为SQL并失败,因为SQL没有字典.一旦给解析器一个简单的字符串,它就能生成一个SQL语句.
你可以让它在本地执行过滤器,而不是在SQL服务器上,但它会达到性能:
var user= (from u in context.Users select u)
.AsEnumerable()
.Where(u=>u.Email == dictionary["email"])
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)