LINQ Диапазон элементов из списка‹MyObject›

Используя Linq, как я могу получить список объектов, где их порядковый номер находится между 5 и 27.

Существует неизвестный номер MyObject, поэтому ничего не удалось найти.

"allItems" всегда идет по порядку, поэтому требуется порядковый номер.

Как это:

List<MyObject>  allItems = GetAllItems();
List<MyObject>  myRange = allItems.LINQSTATEMENTHERE(5 to 27th items);

person Ian Vink    schedule 17.11.2010    source источник


Ответы (2)


Используйте комбинацию Skip() и Take():

int from = 5;
int to = 27;
var myRange = allItems.Skip(from - 1).Take(to - from);
person Justin Niessner    schedule 17.11.2010

Поскольку вам требуется немедленное выполнение (вы хотите загрузить результаты в список), здесь нет необходимости использовать LINQ; вы можете использовать метод экземпляра GetRange для List<T>:

List<MyObject> myRange = allItems.GetRange(from, to - from + 1);

Конечно, если вам нужно отложенное выполнение или вы хотите, чтобы метод применялся к другим типам последовательностей, используйте метод Джастина Нисснера. Единственное преимущество этой техники заключается в том, что она не сломается, если для представления диапазона будет слишком мало элементов.

person Ani    schedule 17.11.2010