Asp.net mvc 4 代码优先的方法为什么Find()比FirstOrDefault()慢
我使用find()和FirstOrDefault()来实现这个MyMethod。两种方法的响应时间不同。查找速度比第一个或默认速度慢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()
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调用应该更慢。