查询将命中数据库的次数是多少?

时间:2013-10-09 11:09:36

标签: linq

任何一个plz都可以优化下面的linq查询。它应该只打一次数据库。

List<LearningItem> items = this.learningitemRepository.GetAll().ToList();

var model = new List<StatementViewerModel>();
foreach (var statement in subjects)
{
    var mi = new StatementViewerModel();
    mi.UserName = statement.UserName;
    mi.SubjectName = statement.Name;
    **int nofItems = items.Where(x => x.SubjectId == statement.SubjectId).Count();**
    double ratio = (double)statement.AttendedItems / (double)nofItems;
    int subjectprogress = (int)(ratio * 100);
    mi.Progress = subjectprogress;
    model.Add(mi);
}

1 个答案:

答案 0 :(得分:1)

根据您发布的内容,您的数据库只能通过GetAll()的{​​{1}}方法进行访问。因此,如果您担心您不止一次查询数据库,learmingitemRepository函数就是您应该查看的位置(假设您的示例不在一个被重复调用的函数中)。

您的其余代码将遍历您的GetAll()集合,并将对象添加到您的subjects集合中。 model循环中似乎没有任何内容正在访问您的数据库。