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();

?それとも、2つの異なる概念を完全に混同していますか?

4

1 に答える 1

2

次の 3 点について混乱していると思います。

  1. context.GetTable<Order>()と同じですcontext.Orders(すべてが正しく構成されていると仮定します。

  2. 例として提供したクエリは同等ではありません。彼らは2つの異なる質問をします。1 つ目は、「すべての会社 ID を教えてください」と尋ねることです。DataLoadOptionsも使用されません。2 つ目は、すべての注文の会社 ID を教えてくださいというものです。重複を取得します。

  3. DataLoadOptions通常、結合ではなく、関連するオブジェクト インスタンスの積極的な読み込みに使用されます。

あなたが本当に探しているのは次のとおりだと思います:

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