Как добавить индексное поле к результатам Linq

Допустим, у меня есть такой массив:

string [] Filelist = ... 

Я хочу создать результат Linq, где каждая запись имеет свою позицию в массиве:

 var list = from f in Filelist select new { Index = (something), Filename = f}; 

Индекс должен быть 0 для 1-го элемента, 1 для второго и т. Д.

Что я должен использовать для выражения Index =?

Не используйте выражение запроса. Используйте перегрузку Select которая передает вам индекс :

 var list = FileList.Select((file, index) => new { Index=index, Filename=file }); 

Вы не можете получить индекс, используя чистые выражения запроса LINQ (те, у кого есть from.. where.. select.. clauses).

Однако это не означает, что вам нужно полностью отказаться от этого стиля запросов LINQ.

Вам просто нужно выйти из выражения запроса LINQ и использовать перегрузку метода .Select(item, index) .

 var newestExistingFilesWithIndexes = (from f in Filelist // we love LINQ query expressions where f.Exists // and we use it anywhere possible orderby f.LastModified descending select f) // but sometimes we have to get out and use LINQ extension methods .Select((f, index) => new { Index = index, Filename = f.Fullname}); 

или предположим, вам нужно отфильтровать список на основе индекса элемента …

 var newestExistingFilesOnlyEvenIndexes = // use the Select method overload to get the index (from f in Filelist.Select((file, index) => new { file, index }) // only take item with an even index where f.index % 2 == 0 where f.file.Exists orderby f.file.LastModified descending select f.file); 
 string[] values = { "a", "b", "c" }; int i = 0; var t = (from v in values select new { Index = i++, Value = v}).ToList(); 
  • Linq to Objects - возвращает пары чисел из списка чисел
  • генерировать EF orderby Выражение строкой
  • Запрос LINQ, чтобы найти элементы в списке, содержащиеся в другом списке
  • Вложенный «из» запроса LINQ, выраженный с помощью методов расширения
  • LINQ Группировка динамически
  • Как сделать левое внешнее соединение с помощью Dynamic Linq?
  • Какой алгоритм сортировки используется LINQ «OrderBy»?
  • Преобразование результата Linq в словарь
  • String.Equals () не работает по назначению
  • Linq to SQL, как это сделать ", где в (список значений)"
  • Linq to XML - обновление / изменение узлов XML-документа
  • Interesting Posts

    Протяните строку с переполнением данных, имея несколько строк в одной полосе

    Android ListView текущее местоположение прокрутки Y пикселей

    Использование свойств javafx.beans в classах моделей

    Какое правило Firebase предотвратит дубликаты в коллекции на основе других полей?

    Как работать с наушниками и динамиками одновременно?

    Как исправить ошибку COMException 80040154?

    Могут ли mongo обновить данные массива?

    Гарантировано ли, что char составляет ровно 8 бит?

    Как? Mount, Find & Recover DATA на жестком диске за пределами коробки Synology

    Как снова запустить неактивное устройство RAID?

    SD-карта сжимается в допустимом размере после копирования образа диска

    Проверьте, успешно ли загружена загрузка FTP или нет?

    Почему темы не рекомендуются в .NET Reactive Extensions?

    Как зарегистрировать некоторое пространство имен URL (myapp: //app.start/) для доступа к вашей программе, вызывая URL-адрес в браузере в ОС Android?

    Восстановить удаленные папки по умолчанию

    Давайте будем гением компьютера.