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

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

string [] Filelist = ... 

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

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

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

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

3 Solutions collect form web for “Как добавить индексное поле к результатам Linq”

Не используйте выражение запроса. Используйте перегрузку 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 в .NET 2.0 Runtime
  • Оператор '||' не может применяться к операндам типа «lambda-выражения» и «lambda-выражения»
  • C # Linq Group В нескольких столбцах
  • Linq. Любой VS .Exists - В чем разница?
  • Как я могу вернуть анонимный тип из метода?
  • Какова эффективность и производительность выражения LINQ и Lambda в .Net?
  • Как выполнить сравнение даты в запросе EF?
  • Как вы создаете запрос LINQ to Entities для непосредственного загрузки дочерних объектов, вместо вызова свойства Reference или Load ()
  • Получить список различных значений в списке
  • Как получить значения из IGrouping
  • TransactionScope vs Transaction в LINQ to SQL
  • Interesting Posts

    Почему я должен нажать клавишу 4 раза, чтобы получить символ «?»?

    Возrotation сгенерированного pdf с использованием пружины MVC

    Синтаксис Razor обеспечивает непревзойденное преимущество в разметке пользовательского интерфейса?

    Автоматическое обновление библиотеки для .NET?

    Преобразование разделенных запятыми строк ints в массив int

    Предупреждение – сравнение между подписанными и беззнаковыми целыми выражениями

    Как загрузить файл изображения в Retrofit 2

    В чем разница между «функцией» и «процедурой»?

    Лучший способ сохранить пароль в базе данных

    Как преобразовать данные, полученные через Meteor.publish?

    Как сказать git, какой секретный ключ использовать?

    Установка родового типа во время выполнения

    Воспроизведение файла MP3 в приложении WinForm

    Chrome localhost cookie не установлен

    Разница между двумя датами в SQLite

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