【问题标题】:Code first approach why Find() is slower then FirstOrDefault()代码优先方法为什么 Find() 比 FirstOrDefault() 慢
【发布时间】:2014-05-28 06:03:15
【问题描述】:

我正在使用 find() 执行此 MyMethod,与 FirstOrDefault() 相同。两种方法的响应时间不同。 Find 比 FirstOrDefault 慢。

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;
        }

使用 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;
       }

请解释一下。谢谢

【问题讨论】:

  • 问题已在 [此处][1] 得到解答。 [1]:stackoverflow.com/questions/14032709/…
  • 它没有得到确切的回答,因为在这种情况下,Find() 方法似乎比 FirstOrDefault 调用慢,而 FirstOrDefault 调用应该更慢。

标签: asp.net-mvc-4 ef-code-first


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2011-08-13
    • 2020-08-29
    • 2013-08-08
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多