Как вы индексируете в var в LINQ?

Мое предложение состоит в использовании функции sleep().

<?php
sleep(5);
header('location'.URL);
?>
10
задан Guy 4 September 2008 в 23:48
поделиться

2 ответа

Как в комментарии говорится, Вы не можете применить индексацию с [] к выражению типа System.Collections.Generic.IEnumerable<T>. Интерфейс IEnumerable только поддерживает метод GetEnumerator(). Однако с LINQ можно назвать дополнительный метод ElementAt(int).

21
ответ дан 3 December 2019 в 16:32
поделиться

Вы не можете применить индекс к var, если это не индексируемый тип:

//works because under the hood the C# compiler has converted var to string[]
var arrayVar = {"one", "two", "three"};
arrayVar[1].Dump();

//now let's try
var selectVar = arrayVar.Select( (a,i) => new { Line = a });

//or this (I find this syntax easier, but either works)
var selectVar =
    from s in arrayVar 
    select new { Line = s };

В обоих этих случаях selectVar на самом деле IEnumerable<'a> - не индексируемый тип. Можно легко преобразовать его в тот хотя:

//convert it to a List<'a>
var aList = selectVar.ToList();

//convert it to a 'a[]
var anArray = selectVar.ToArray();

//or even a Dictionary<string,'a>
var aDictionary = selectVar.ToDictionary( x => x.Line );
4
ответ дан 3 December 2019 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: