我有一个钻取图表的方法,可根据用户点击的列获取数据。使用Entity Framework 5,我的EF类如下(伪代码):
父母A类,B类:A,C类:B,
D类:B
所以A有很多B,B可以有很多C和D
该方法有一个用于单击列的开关,在切换语句之前我加载了B的集合,因为A从未在图表上使用过。
Activity
返回数据大约需要两秒钟(大约40行)。
我发现不是使用bList,而是(例如:对于案例C)使用
var bList = _db.ACollection.SelectMany(x => x.BCollection).ToList();
switch (columnClicked)
{
case B:
var items = bList.Select(//project to display item for chart);
case C:
var items = bList.SelectMany(x => x.CCollection).ToList().Select(//project);
case D:
//same as C
}
速度增加近10倍!
任何人都可以解释这个吗?
编辑(澄清) 在我投影图表细节项目的情况C中,我有一个方法来调用它来显示文本的颜色
_db.ACollection.SelectMany(x => x.BCollection).SelectMany(x => x.CCollection).ToList().Select(//project)