對於C#,實體框架和LINW,我希望有人能夠在關於LINQ的代碼中解釋一些東西。我的程序中有一個方法從表中選擇一個用戶。該方法是:從包含LINQ語句/表達式的表中選擇用戶
public static cp_user SelectUser(string user, string passw)
{
try
{
cp_user entityUser = (from u in _db.cp_user
where u.username == user && u.password == passw
select u).FirstOrDefault();
return entityUser;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
return null;
}
cp_user是對應於我在我的數據庫中的表的類。而_db是一個保存對數據庫實例的引用的字段。
在選擇用戶方法我明白,有類型cp_user的局部變量的創建,它是由該語句定義:
(from u in _db.cp_user
where u.username == user && u.password == passw
select u).FirstOrDefault();
林困惑的語句的第一部分。 「從_dp.cp_user中的u開始」。 到目前爲止,我一直在使用MySQL,所以它很迷惑地看到這個「來自你」。在MySQL中,這個「u」是指一個表。但在Linq im混淆了它的功能。
儘管我大致瞭解了其餘的聲明,但方法中的用戶名和密碼參數必須與表中的數據相同。並且它會返回數據庫對象。但是,在最後一部分「選擇你」中再次感到困惑。
另一個問題我已經是在所謂的checkany另一種方法,它檢查用戶登錄正確的是:
public static bool CheckAny(string user, string passw)
{
bool itIsAlredy = _db.cp_user.Any(u => u.username == user && u.password == passw);
return itIsAlredy;
}
我明白,在用戶名和密碼CheckAny methodtakes並創建一個布爾變量它可以根據語句返回true或false。這是我不瞭解的部分。
- 對於我這個語句 「(U => u.username ==用戶& & u.password == PASSW);」看起來像這意味着方法參數中的用戶名和密碼必須存在於數據庫中。但是有學校的人告訴我,這意味着用戶名和密碼必須正確對應;您不能擁有連接到其他用戶名的密碼。那麼這個聲明實際上說了些什麼?而且我也不明白整個「u => u.username」。像這個你代表什麼。它是特殊的linq語法,如果是這意味着什麼?任何人都有鏈接解釋這一點?
如果我有任何錯誤的陳述,請糾正我,如果我有新的編程,一般只在MySQL以前使用過。如果有人能回答我提出的三個問題,我將不勝感激。
由於在預先from u in _db.cp_user
您需要開始使用Linq to SQL或Linq來處理一般情況。這是在這裏解釋太基本的東西。 – niksofteng
@niksofteng好的非常感謝你在提出另一個問題之前,我會牢記這一點。 Regards –