【发布时间】:2013-11-01 16:56:59
【问题描述】:
我正在开发一个 Web 应用程序并使用 mvc、实体框架、ado.net 实体。 我想知道在某些条件下哪个可以快速获取数据: 1. Lambda 表达式 2.linq查询
代码片段如下(在下面的代码中_dict是字典)
string fname = "", username = "", lname = "", mail = "";
if (_dict.ContainsKey("fname"))
fname = _dict["fname"].ToLower();
if (_dict.ContainsKey("username"))
username = _dict["username"].ToLower();
if (_dict.ContainsKey("lname"))
lname=_dict["lname"].ToLower();
if (_dict.ContainsKey("mail"))
mail = _dict["mail"].ToLower();
var _admins = db.AdminsTables.Where(x =>
x.firstname.ToLower().Contains(fname) &&
x.username.ToLower().Contains(username) &&
x.lastname.ToLower().Contains(lname) &&
x.useremail.ToLower().Contains(mail)).ToList();
或
string fname = "", username = "", lname = "", mail = "";
if (_dict.ContainsKey("fname"))
fname = _dict["fname"].ToLower();
if (_dict.ContainsKey("username"))
username = _dict["username"].ToLower();
if (_dict.ContainsKey("lname"))
lname=_dict["lname"].ToLower();
if (_dict.ContainsKey("mail"))
mail = _dict["mail"].ToLower();
var _admins = (from record in db.AdminsTables
where record.firstname.ToLower().Contains(fname) && record.username.ToLower().Contains(username) && record.lastname.ToLower().Contains(lname) && record.useremail.ToLower().Contains(mail)
orderby record.id descending
select record).ToList();
请建议我哪个更快并且可能,然后也给出理由。
【问题讨论】:
-
我认为他们产生相同的 sql 查询。但在第二种情况下,你也在排序..
-
@karaxuna 是的,两者都给出了相同的结果,但我的问题是这两者中哪一个是快速的方法?
-
LINQ - Fluent and Query Expression - Is there any benefit(s) of one over other? 的可能重复项——假设排序的差异是显而易见的。
标签: asp.net-mvc-4 linq-to-entities entity-framework-5