Asp.net mvc 4 代码优先的方法为什么Find()比FirstOrDefault()慢

Asp.net mvc 4 代码优先的方法为什么Find()比FirstOrDefault()慢,asp.net-mvc-4,ef-code-first,Asp.net Mvc 4,Ef Code First,我使用find()和FirstOrDefault()来实现这个MyMethod。两种方法的响应时间不同。查找速度比第一个或默认速度慢 public SelectList MyMethod(Guid UID) { List<SelectListItem> selectItems = dbContext.AppMaps.Find(UID).AppMapTerms.AsEnumerable().Select(s => new SelectListItem()

我使用find()和FirstOrDefault()来实现这个MyMethod。两种方法的响应时间不同。查找速度比第一个或默认速度慢

public SelectList MyMethod(Guid UID) {
            List<SelectListItem> selectItems = dbContext.AppMaps.Find(UID).AppMapTerms.AsEnumerable().Select(s => new SelectListItem() {
                Text = s.TermName + " (" + s.StartPeriod.ToShortDateString() + " - " + s.EndPeriod.ToShortDateString() + ")",
                Value = s.UID.ToString(),
                Selected = UID == s.UID ? true : false
            }
          ).ToList();
            selectItems.Insert(0, new SelectListItem() {
                Text = " --Select -- ",
                Value = null,
                Selected = false
            });
            SelectList selectList = new SelectList(selectItems, "Value", "Text");
            return selectList;
        }
公共选择列表MyMethod(Guid UID){ List selectItems=dbContext.AppMaps.Find(UID).AppMapTerms.AsEnumerable().Select(s=>new SelectListItem()){ Text=s.TermName+“(“+s.StartPeriod.ToSortDateString()+”-“+s.EndPeriod.ToSortDateString()+”)”, Value=s.UID.ToString(), Selected=UID==s.UID?真:假 } ).ToList(); 插入(0,新的SelectListItem(){ Text=“--选择--”, 值=空, 所选=错误 }); SelectList SelectList=新建SelectList(selectItems,“值”、“文本”); 返回选择列表; } 使用FirstOrdefault方法

 public SelectList MyMethod(Guid UID) {
           AppRepository oAppRepository = new AppRepository();
           List<SelectListItem> selectItems = oAppRepository.AllIncluding().FirstOrDefault(e => e.UID == UID).AppTerms.AsEnumerable().Select(s => new SelectListItem() {
               Text = s.TermName + " (" + s.StartPeriod.ToShortDateString() + " - " + s.EndPeriod.ToShortDateString() + ")",
               Value = s.UID.ToString(),
               Selected = UID == s.UID ? true : false
           }
         ).ToList();
           selectItems.Insert(0, new SelectListItem() {
               Text = " --Select -- ",
               Value = null,
               Selected = false
           });
           SelectList selectList = new SelectList(selectItems, "Value", "Text");
           return selectList;
       }
公共选择列表MyMethod(Guid UID){ appropository oaappropository=新appropository(); List selectItems=OAAppropository.AllIncluding().FirstOrDefault(e=>e.UID==UID).AppTerms.AsEnumerable().Select(s=>new SelectListItem()){ Text=s.TermName+“(“+s.StartPeriod.ToSortDateString()+”-“+s.EndPeriod.ToSortDateString()+”)”, Value=s.UID.ToString(), Selected=UID==s.UID?真:假 } ).ToList(); 插入(0,新的SelectListItem(){ Text=“--选择--”, 值=空, 所选=错误 }); SelectList SelectList=新建SelectList(selectItems,“值”、“文本”); 返回选择列表; }
请解释一下。谢谢

在第一种情况下,您使用的是加载内存中所有内容的
AsEnumerable()
,之后它将应用查询。

问题已在[此处][1]中得到回答。[1] :它没有得到准确的回答,因为在本例中,Find()方法似乎比FirstOrDefault调用慢,而FirstOrDefault调用应该更慢。