我正在寫一段代碼與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