Linq To Entities异常无法识别该方法且无法转换为商店表达式

Niv*_*ash 6 c# linq-to-entities

有人可以解释为什么我的LINQ代码出现此错误?

LINQ to Entities无法识别方法'System.String GenerateHashWithSalt(System.String,System.String)'方法,并且此方法无法转换为商店表达式.

var query = (from u in context.Users
                         where 
                         u.Password ==  
                          GenerateHashWithSalt(password, GetUserID(username))
                         select u).Count();
Run Code Online (Sandbox Code Playgroud)

Jet*_*hro 14

您正在尝试将方法传递给EF,该方法尝试将该方法转换为已知的SQL命令.SQL不知道GenerateHashWithSalt(System.String, System.String)
您应该首先将结果分配给变量然后生成Linq to Entity Query.


var hashedPassword = GenerateHashWithSalt(password, GetUserID(username));
var user = (from p in Users
        where p.Password == hashedPassword
        select p).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)