我被困在一個linq到實體查詢的問題中。實體框架忽略任何子句
我有3個表格:Transaction
,Security
和Prices
。
導航如下: 事務有哪些可以有很多價格
我想要做的就是與安全信息交易,所有的價格,其日期是少了一個安全交易日期。
我寫的查詢是這樣的:
context.Transaction
.Include("Security.Prices")
.Where(transaction =>
transaction.Security.Prices.Any(price => price.Date < transaction.Date))
.ToList();
此查詢的結果是不是我所期望,的foreach交易我總是得到安全的所有價格,而不只是有價格一個小於交易日期的日期。
我試過的Anthor事情是顛倒查詢試圖獲取安全性的所有事務,filterning上的安全代碼和userid列表。但即使是這一次的任何過濾器被忽略
context.Security
.Include("Transactions")
.Where(security => security.Code == code)
.Where(s => s.Transactions.Any(t => Ids.Contains(t.Id)))
.ToList();
有了這個代碼,我得到的所有事務由所有用戶,而不僅僅是用戶的ID列表中進行的安全性。
我不明白我在做這個查詢有什麼問題嗎?
我不是目前的EF專家,但不包括與凡在不同的數據和問題的部分工作?包含說「包含您返回的事務的這些數據」,以及Where說「我想要這些事務」。如果在哪裏神奇地應用於包含部分,我會覺得很奇怪。 Where部分僅過濾*交易*,而不是價格。 –
換句話說,您應該只獲得交易日期前的價格的交易,但您將獲得與該交易相關的所有價格。 –