(很抱歉的模糊標題,真的不知道該怎麼做了。)獲取最新的兩個項目,用於兩個給定日期與EF 6
這是.NET 4.7,EF 6.1。我有兩個表格:一組產品和一組歷史價格。我需要編寫一些代碼,以獲取所提供的兩個日期(開始和結束)中所有產品及其價格的列表。這本質上是一個報告,看看這兩個日期之間產品價格是如何變化的,但我只需要開始/結束價格,而不是兩者之間的所有東西。
我能想到的唯一方法就像下面的代碼。我會運行兩次 - 一次是開始日期,一次是結束日期 - 然後我會將這兩個列表加入我需要的模型類型的一個列表中。我不能爲我的生活弄清楚如何做到這一點。 我應該怎麼做到這一點?
簡表的佈局:
Product HistoricalPrice
------- ---------------
-Id -Id
-Name -ProductId
-ModifiedAt
-NewPrice
這是我嘗試使用的代碼。 Product
是對HistoricalPrice
的Product
的引用,它是該類的一部分,並且以ProductId
字段引用。我需要從此代碼的最終結果中獲取產品名稱/ ID。
var historicalStartPrices = await _context.ProductHistoricalPrices
// need to include the product itself
.Include(p => p.Product)
// only get prices that come before the start date
.Where(p => p.ModifiedAt <= start)
// order from most recent -> oldest by modified date
.OrderByDescending(p => p.ModifiedAt)
// group prices by the product ID
.GroupBy(p => p.ProductId)
// take only the first result for each product ID
.Select(g => g.First())
// enumerate the results
.ToListAsync();
即代碼拋出該異常:
NotSupportedException異常:該方法「第一」只能用作最終查詢操作。請考慮在此實例中使用方法「FirstOrDefault」。
如果我切換到FirstOrDefault
,那麼所有Product
都爲空。
我剛剛添加了這個問題,抱歉的混淆。 'Product'是對'HistoricalPrice'的'Product'的引用,它是類的一部分,並且用'ProductId'字段引用。我需要從此代碼的最終結果中獲取產品名稱/ ID。 – vaindil