0

我不知道怎么问这个问题。所以我只举一个例子。

代码:

var db = new dbContext();
var dlo = new DataLoadOptions()

dlo.LoadWith<Order>(x => x.Company);
db.LoadOptions = dlo;
var compIds = prms.companies.Select(x => x.Id).ToArray();

正如我对上面代码的理解,我从 Order 表中加载 Company,然后通过他们的 ID 获取公司。是否与

var compIds = (from it in context.GetTable<Order>()
                       select it.Company.Id).ToArray();

? 还是我完全混淆了两个不同的概念?

4

1 回答 1

2

我认为您对三件事感到困惑:

  1. context.GetTable<Order>()context.Orders(假设一切配置正确。

  2. 您作为示例提供的查询不等效;他们问两个不同的问题。第一个是询问“给我所有的公司 ID”。DataLoadOptions甚至不会被使用。第二个是询问给我每个订单的公司 ID。你会得到重复的。

  3. DataLoadOptions一般用于相关对象实例的预加载,而不是加入。

我认为你真正想要的是:

var uniqueCompanyIDsThatHaveAtLeastOneOrder = db.Orders.Select(o => o.Company.Id).Distinct();
于 2012-06-13T15:43:48.107 回答