LINQ Select语句进行许多SQL调用

时间:2013-05-08 10:10:16

标签: c# linq linq-to-sql

我正在尝试在链接到数据库查询的IQUeryable上运行Select。它工作正常,但对于所有选择的属性,它运行一个单独的查询。

我的代码看起来像这样

IQueryable<MyDataSource> data = [Some Complicated Query I've been Building Up];

var results = data.Select(d => new 
{
A = d.A,
B = d.B,
C = d.C

}).Take(100).ToArray();

现在,这需要很长时间,即使实际的查询没有花费那么长时间。 当我在其上运行SQL分析器时,我发现它为我正在选择的每个属性运行不同的SQL选择过程 - 对于我正在返回的每个实体(所以在上面的示例中大约有300个不同的查询,以及作为执行过滤的实际第一个查询。)

我很确定我在这里做错了什么,这是什么?我希望它运行一个大型查询 - 从数据源中选择正确的列(你知道从[bla bla]中选择前100个d.A,d.B,d.C),而不是所有这些混乱。

1 个答案:

答案 0 :(得分:0)

您可以使用DataLoadOptions

影响延迟/急切加载

这会强制加载B

DataLoadOptions options = new DataLoadOptions();
options.LoadWith<a>(a => a.B);
dc.LoadOptions = options;