Вы можете использовать этот метод расширения для создания групп последовательностей, которые удовлетворяют ваш предикат
public static IEnumerable<IEnumerable<T>> GroupBySequence<T>(
this IEnumerable<T> source, Func<T, bool> predicate)
{
var iterator = source.GetEnumerator();
List<T> group = new List<T>();
while (iterator.MoveNext())
{
if (predicate(iterator.Current))
{
group.Add(iterator.Current);
continue;
}
if (group.Any())
{
yield return group;
group = new List<T>();
}
}
if (group.Any())
yield return group;
}
Использование:
int[] data = { 1, 2, 1, 2, 2, 2, 1 };
var groups = data.GroupBySequence(i => i == 2); // returns [2] and [2,2,2]
является то, что весь ваш стол (по ширине)? –
У вас есть дополнительная информация о данных в базе данных, которые вы хотите фильтровать? –
Какая у вас схема? –