2013-12-03 3 views
1

Язык, который я использую, - это C#.Лучший элемент доступа в IEnumerable типа

Скажем, у нас есть IEnumerable, который является результатом запроса linq. T - анонимный тип. Каков наилучший способ, если мы хотим получить доступ к элементам этого типа.

Я думаю, что есть два пути.

1) Преобразуйте IEnumerable в List и затем получите доступ к элементам.

List<T> list = result.ToList(); 
for(int rowIndex=0; rowIndex<list.Count; rowIndex++) 
{ 
    double x = list[rowIndex].val; 
} 

2)

for(int rowIndex=0; rowIndex<result.Count(); rowIndex++) 
{ 
    double x = result.ElementAt(rowIndex).val; 
} 

Причина, почему я имею в виду что-то вроде выше, за исключением того, что доступ к элементам IEnumerable, мне нужно их индексы. Другими словами, если элемент является первым, вторым и т.д.

Заранее благодарим за любую помощь!

+3

Я все еще не понимаю проблему. Вам не нужно создавать коллекцию, использовать 'int index = 0' и увеличивать ее в' foreach'. Затем у вас есть индекс и элемент. –

+3

Что не так с 'foreach' с помощью' IEnumerable'? – crashmstr

+1

Как T T быть анонимным типом? –

ответ

9

Вам не нужно создавать коллекцию, используйте переменную int, которая равна 0, и увеличивайте ее в foreach. Затем у вас есть индекс и элемент.

int index = 0; 
foreach(var x in result) 
{ 
    // x is the element and index the current index 
    Console.WriteLine("Val:{0} Index:{1}", x.val, index); 
    index ++; 
} 
Смежные вопросы