2013-08-16 25 views
0

我試圖找出如何編寫LINQ查詢返回的客戶名單誰在給定日期改變了他們的地址檢測客戶資料變更

Cusomters 
- Name (nvarchar) 
- Address (nvarchar) 
- CheckInDate (datetime) 

我將首先把誰檢查客戶列表然後在每個客戶中循環並獲取該客戶的支票以查看是否有變化。這會導致大量的數據庫查詢。有沒有更有效的方法來做到這一點?

+0

從查詢上方的'Customers'模式中,讓所有在特定日期之前或之前簽入的客戶都很簡單。當他們做出更改時,我沒有看到你保存了哪些記錄。 – Yuck

+0

我會拿一個顧客的最後兩張支票可以比較地址字段 – James

+0

按照模式,我假設沒有反規範化發生。 「客戶A」的地址在下次登機時可能會有所不同。 – Khan

回答

1

這將檢測到所有通過yourDate更改其地址的客戶。

var result = Customers.Where(c=>c.CheckInDate <= yourDate) 
         .GroupBy(c=>c.Name) 
         .Where(g=>g.GroupBy(c=>c.Address).Count() > 1) 
         .SelectMany(x=>x);