任何一个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);
}
答案 0 :(得分:1)
根据您发布的内容,您的数据库只能通过GetAll()
的{{1}}方法进行访问。因此,如果您担心您不止一次查询数据库,learmingitemRepository
函数就是您应该查看的位置(假设您的示例不在一个被重复调用的函数中)。
您的其余代码将遍历您的GetAll()
集合,并将对象添加到您的subjects
集合中。 model
循环中似乎没有任何内容正在访问您的数据库。