Linq Query中的MD5密码哈希

时间:2016-03-23 10:44:59

标签: linq hash linq-to-sql md5

我有以下Linq查询:

 bool exists = db.Users.Any(i => string.Compare(md5.ComputeHash(Encoding.ASCII.GetBytes(string.Concat(i.password, i.username))).ToString(), toCheck) == 0);

我有以下错误:

Method 'Byte[] GetBytes(System.String)' has no supported translation to SQL.

1 个答案:

答案 0 :(得分:0)

使用" AsEnumerable"扩展方法将强制"用户"的内容要返回到应用程序的表,其中计算表达式的其余部分。这避免了仅使用SQL Server中也支持的.net函数的需要。

 bool exists = 
    db
    .Users
    .Select(
        user =>
            new
            {
                user.password,
                user.username
            })
    .AsEnumerable()
    .Any(i => string.Compare(md5.ComputeHash(Encoding.ASCII.GetBytes(string.Concat(i.password, i.username))).ToString(), toCheck) == 0);