您好我有一个方法:
public JsonResult GetActivities(int id)
{
var activities = ActivityRepository.GetAll().Where(x => x.AreaId == id);
var jsonData = new {
rows = activities.Select(q => new {
Id = q.Id.ToString(),
q.Descriptor
}).ToList()
};
return Json(jsonData, JsonRequestBehavior.AllowGet);
}
它工作正常,但我找到了一行:
var jsonData = new
{
rows = activities.Select(q => new { Id = q.Id.ToString(), q.Descriptor }).ToList()
};
需要很长时间才能执行。
有人可以向我解释为什么会这样,是否有更有效的方式?
答案 0 :(得分:1)
问题很可能与您的数据库有关......
正如@geofftnz已经提到的那样,你应该使用一个SQL分析器(例如AnjLab Sql Profiler),并找出幕后发生的事情。
之所以没有花费很长时间,是因为:
var activities = ActivityRepository.GetAll().Where(x => x.AreaId == id);
是因为返回类型IEnumerable<Activity>
(懒惰),它还没有向数据库发送任何查询。
但是当你这样做时:
var jsonData = new
{
rows = activities.Select(q => new
{
Id = q.Id.ToString(),
q.Descriptor
}).ToList()
};
它将构成一个查询,并在.ToList()
(急切)点击数据库。