本来我有这个方法: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