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(); 
选择条件