1
我正在使用LinqPad與實體框架4模型和MS SQL 2008數據庫。Linq到實體返回所有外部實體和一個或沒有關聯實體
假設我們有一個Customer實體與Purchase.CustomerID的外鍵具有購買關聯。
以下linq產生一個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>
,所以我覺得我需要保持Customer
實體,從LINQ查詢返回Purchases
關聯。
使用案例:
var customers = CustomerService.GetCustomersAndMostRecentOrder();
foreach (Customer c in customers) {
Console.WriteLine(c.Lastname + ":" +
c.Purchases.Count() == 0 ? "None" : c.Purchases[0].PurchaseOrder);
}
感謝您的見解。
我想這一點,但我在輸出中得到0購買。 - 在'採購= c.Purchases'上增加'as EntityCollection' –
GoClimbColorado
嘗試更改Take(1)到FirstOrDefault() – Aducci
沒有將其更改回採購實例而不是採購集合。還嘗試了DefaultIfEmpty()... get 0 Purchase。 – GoClimbColorado