我正在写一段代码与linq必须散列一个字符串(在这种情况下,我的登录),然后尝试找到它到我的数据库。哈希登录,然后用LINQ搜索
我想:
var userFind = context.Users.FirstOrDefault(user =>HashHelper.HashCode(user.Login).Equals(u.Login));
我因为的hashCode错误。 我不会用foreach阅读我的所有列表。我想知道是否可以用一行代码来完成。 此致敬礼。
编辑:我找到了一个办法,但它没有我想象的那么轻。
User userFind = null;
foreach (var user in context.Users)
{
string hashedLogin = HashHelper.HashCode(user.Login);
if(hashedLogin.Equals(u.Login))
{
userFind = user;
}
}
什么是'u.Login',为什么要从数据库中散列值? – Jodrell 2012-07-11 09:28:03
啊,我看到了,所以'u.Login'是一个你想匹配的哈希登录。非哈希登录存储在数据库中。您遇到的问题是'HashHelper.HashCode'没有明显的TSQL翻译,因此任何ORM都无法将其转换为SQL。这是正确的吗? – Jodrell 2012-07-11 09:59:55
您的编辑会将所有用户拉到客户端,并执行可以评估“HashHelper.HashCode”的比较。如果你没有很多用户(1000+左右),这可能是最简单的解决方案。 – Jodrell 2012-07-11 10:10:42