IEnumerable Count Performance

时间:2016-12-21 17:04:32

标签: .net

我有一个数据库调用的数据集和内存数据集的结果集。我正在循环我的内存数据集并从数据库结果中获取计数。我在这里面临的问题是我注意到Count性能有点烦人。对于10000条记录,数据库调用返回1-2秒,但是对Count的操作需要4秒钟。

我甚至尝试过Parallel.Foreach,但这似乎没什么帮助。 UPDATE:

var DBresult = context.tables.ToList();
var InMemory = List<MyClass>();//let's assume I have 100 items

foreach(var item in InMemory)
{
item.count1 = DBresult.Where(item.somefilter).Count(),
item.count2 = DBresult.Where(item.somefilter2).Count()
.....//more count
}

第二次更新: 我似乎需要澄清一些关于我如何做我所做的事情的担忧。我使用LinqKit来帮助我构建动态表达式。在一些简单的例子中,它很有效 - 但对于复杂的情况则不然。在这个例子中,我已经定义了一个“MyClass”列表,让我们说“历史,数学,科学”。在每个课程中,我都有不同的计算学生的方法。

对于历史课,badstudent =成绩为&lt;的学生C和65%的出勤率。
数学课,badstudent =成绩为&lt;的学生D和50%的出勤率。

我明白我可以选择编写存储过程并使其工作。但是,我试图以这种方式声明我的过滤器,因为它们正在我的解决方案中的其他项目中使用。它更易于维护和重用。我愿意接受“.ToList()”与编写存储过程的成本。如上所述,数据库性能不是导致速度缓慢的。

0 个答案:

没有答案