本來我有這個方法:LINQ的是這個string.Compare查詢效率低下,有沒有更好的辦法?
public virtual User GetUser(string username)
{
return _db.Users.Single(x => x.UserName == username);
}
所以基本上系統會根據人的用戶名的用戶LINQ的方法。
麻煩的是,我發現,有時候用戶名是在開始未來通過以大寫字母所以它並不總是工作。
於是我想出了:
public virtual User GetUser(string username)
{
return _db.Users.Single(x => (string.Compare(x.UserName, username, true) == 0));
}
這工作。然而,我得到這一定是真的低效率做一個字符串。比較爲用戶?
有沒有更好的方式來寫這篇文章沒有string.Compare?
盧克 - 你可能意味着你將不得不自己解析列表**,然後在該集合上執行'string.Compare()'操作。雖然你對實際問題的回答是正確的,但你建議EF會自行解決整套問題令人困惑。 – rumblefx0 2016-08-03 09:37:40
@JosephD。那不是我的意思。看看數據庫查詢上述生成(如'SELECT * FROM用戶其中username ==「bob'')EF將採取查詢和翻譯爲SQL,沒有string.Compare()使用的。 – 2016-08-03 12:09:02
@ Luke.Yes,你是對的 - 也許我隱約解釋。你的答案提到'string.Compare()'不被支持,並且措辭使得它看起來好像EF會忽略它。實際上它會拋出一個例外。反正,我的壞:) – rumblefx0 2016-08-03 12:34:02