0

原始查詢:轉換這個ROW_NUMBER查詢到實體框架LINQ到對象查詢

select min(id) as startid, max(id) as endid 
from (select t.*, floor((row_number() over (order by id) - 1)/200) as grp 
     from t 
     where t.x = y 
    ) t 
group by grp; 

這是一個後續的問題:我想知道是否有可能將此轉換爲Sql Range Groups Start and End Id

Linq的對象查詢?我嘗試過四處尋找想法,並使用.Skip().Take()播放,但無法獲得任何接近我需要的東西。謝謝。

編輯:我希望整個交易發生在數據庫中。這將是一個相當大的數據集,如果我不需要在應用程序中進一步處理它,那將是最好的。

回答

0

試試這個,你可以糾正指數邊框作爲你想:

var query = context.YourTable.Where(x => x.t == "your y variable").ToList() 
    .OrderBy(x => x.ID).Select((x, index) => new { item = x, index = index }) 
    .GroupBy(x => x.index/200) 
    .Select(x => new { minID = x.Min(y => y.item.ID), maxID = x.Max(y => y.item.ID) }).ToList(); 
選擇條件