我目前正在查詢資料庫中的一個表,我需要在其中檢索 24 個均勻分布的資料點,以便在圖表上繪制從資料集中某個日期到當前時間的黃金價格。該表可能包含數百萬行資料。
我想使用模塊化 (%),但是用 LINQ 撰寫的查詢無法轉換為 SQL 查詢。我相信這也是因為 IQueryable 沒有列舉器并且 LINQ 庫沒有必要的方法來執行此操作。
當我.ToList()使用orderedGoldData. 但是,在一個非常大的資料集上,我寧愿撰寫一個查詢來執行此操作。
public IEnumerable<HistoricalGoldDatum> GetHistoricGoldData(string userId, DateTime firstDate,
int dataPoints = 24)
{
var orderedGoldData =
DbContext.UserBalanceHistoricalData
.Where(gol => gol.DateCreated > firstDate)
.OrderBy(gol => gol.DateCreated);
var div = orderedGoldData.Count() / dataPoints;
return orderedGoldData.Where((b, i) => i % div == 0);
}
如何以最佳時間復雜度使用 LINQ 或標準查詢在 IQueryable 上實作我想要實作的目標?
uj5u.com熱心網友回復:
在這種情況下,Linq to SQL 可能不會產生最有效的查詢,所以我會使用標準查詢,如下所示:
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY DateCreated) AS rn FROM UserBalanceHistoricalData) hd
WHERE (hd.rn % div)=0
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/480881.html
下一篇:.netcoreMVCMonthscheduleforpushinginandoutcantstoredaysindatabaseusingentityframework
