我有一个数据库表,其中每行都包含一个顺序索引。我想根据这个索引列选择连续的行组。例如,如果我有具有以下索引值的行:
1
3
4
5
7
9
10
11
12
15
16
我想选择具有 3 个连续索引的所有组(这个数字会有所不同)。我会得到以下组:
3, 4, 5
9, 10, 11
10, 11, 12
基本上,我正在尝试实现与这里提出的问题类似的东西:
selecting consecutive numbers using SQL query
但是,我想用 LINQ to Entities 来实现它,而不是实际的 SQL。我也不想使用存储过程,我不想做任何类型的 ToList/循环方法。
编辑:具有超过请求的连续元素的组不一定需要分开。即在前面的示例中,结果 9、10、11、12 也是可以接受的。
最佳答案
所以我认为我已经提出了一个非常好的解决方案,该解决方案是根据 Brian 在我链接到的主题中的回答建模的。
var q = from a in query
from b in query
where a.Index < b.Index
&& b.Index < a.Index + 3
group b by new { a.Index }
into myGroup
where myGroup.Count() + 1 == 3
select myGroup.Key.Index;
将 3 更改为您想要的连续行数。这为您提供了每组连续行的第一个索引。应用于我提供的原始示例,您将得到:
3
9
10
关于database - 使用 LINQ to Entities 选择连续条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293856/