我有一个用户表,分组到会话中。我想选择一个阵列对于由多项任务的每个用户他们在每一届有:LINQ to SQL:在一个查询中选择整数数组
var taskCounts =
from session in gzClasses.e_userLongSessions
orderby session.workerId ascending, session.startTime ascending
group session by session.workerId
into record
select record.Select(s => s.totalTasks).ToArray();
int[][] result = taskCounts.ToArray();
上述理论上的作品,但它导致在一个单独的SQL查询为每个用户如下图所示。由于数据库不是本地的,这需要相当长的时间。有没有办法在一个查询中获取所有数据,并减少运行大量单个查询的开销?
同时,我想确保它仅通过线路传输totalTasks
整数值,而不是发送整个数据库记录的效率。换句话说,我想从一个远程数据库中获取一组分组整数,并将它们排列成C#程序中的数组。这听起来很简单,但我很难让LINQ来做到这一点。
您的ef上下文中是否启用了延迟加载?这可以解释这样的行为,因为对于每个将被枚举的对象,它将执行不同的查询。 –
@DimitrisKalaitzis我不知道那是什么 - 你能给一个指示器显示如何关闭它,我会再次尝试这个查询吗? –
你使用实体框架吗?如果你确实可以改变你设置gzClasses的设置。例如gzClasses.ContextOptions.LazyLoadingEnabled = false; –