LinqPadとEntity Framework 4モデルおよびMS SQL 2008データベースを使用しています。Linq toすべての外部エンティティと1つのエンティティまたは関連付けられていないエンティティを返す
Customer.CustomerIDへの外部キーを使用してPurchaseへの関連付けを持つCustomerエンティティがあるとします。
ObjectQuery<Customer>
は、Purchases
アソシエートEntityCollection<Purchase>
です。
from c in Customers.Include("Purchases")
select c
今、私は唯一の最も最近の購入ですべての顧客を取得したいです。購入がない場合はPurchases
コレクションを空にします。
私は次のようなものが必要ですが、エンティティと関連付けを維持しています。私はすべてコレクションを購入した顧客を0または1に限定購入したい。私のサービスで
from c in Customers
from p in c.Purchases.Where(p => p.PurchaseDate == c.Purchases.Max(m => m.PurchaseDate).DefaultIfEmpty()
select new { CustomerID = c.CustomerID, PurchaseID = (int?)p.PurchaseID }
私はList<Customer>
を返すので、私は、私はLINQクエリからの復帰にCustomer
エンティティとPurchases
関連を維持する必要があると思います。
利用の場合:あなたの洞察力のための
var customers = CustomerService.GetCustomersAndMostRecentOrder();
foreach (Customer c in customers) {
Console.WriteLine(c.Lastname + ":" +
c.Purchases.Count() == 0 ? "None" : c.Purchases[0].PurchaseOrder);
}
感謝。
私はこれを試してみましたが、出力に0購入を取得しています。 - 'Purchases = c.Purchases'に 'as EntityCollection'を追加しました –
GoClimbColorado
Take(1)をFirstOrDefault()に変更してみてください – Aducci
いいえ、購入のコレクションではなくPurchaseのインスタンスに変更します。また、DefaultIfEmpty()を試してみました... 0購入を得る。 – GoClimbColorado