不久前,我进行了技术面试,工程师问我,从性能方面看,哪种方法更好,例如在实体框架中。显然,我不知道正确的答案(我说没有区别),我也没有在互联网上找到解决方案。
哪种方法更快?Data1还是Data2?
using(MyContext db = new MyContext())
{
var data1 = db.Users.Where(x => x.Name == "Test").FirstOrDefault();
var data2 = (from x in db.Users where x.Name == "Test" select x).FirstOrDefault();
}
发布于 2018-08-06 18:04:56
查询语法只是一种语法糖,在编译时一直被降为方法语法。
给出一个示例代码如下:
var list = new List<Entity>();
var data1 = list.Where(x => x.Name == "Test").FirstOrDefault();
var data2 = (from x in list where x.Name == "Test" select x).FirstOrDefault();
您可以查看此代码的降低版本:
List<Entity> source = new List<Entity>();
Entity entity = source.Where(<>c.<>9__0_0 ?? (<>c.<>9__0_0 = <>c.<>9.<M>b__0_0)).FirstOrDefault();
Entity entity2 = source.Where(<>c.<>9__0_1 ?? (<>c.<>9__0_1 = <>c.<>9.<M>b__0_1)).FirstOrDefault();
如您所见,这两个查询的查询结构完全相同。
完整的例子是这里。
https://stackoverflow.com/questions/51709695
复制相似问题