Как перейти к конкретному пункту в IEnumerable - PullRequest
42 голосов
/ 26 мая 2010

У меня есть IEnumerable, который содержит число данных внутри него.

Редактировать IEnumerable взят из директивы System.Collection.Ienumerable.

Прикрепленный снимок Viual Studio, Enum, содержащий данные:

альтернативный текст http://www.freeimagehosting.net/uploads/bd72c6c310.jpg

Чтобы кратко рассказать об изображении выше, eLevelData - это переменная IEnumerable, в которой хранятся мои данные.

Теперь я хочу перейти к данным с индексом 4 или 5, но я не хочу использовать цикл foreach. Любые предложения, пожалуйста.

Спасибо

Subhen

Ответы [ 2 ]

89 голосов
/ 26 мая 2010

var item = eLevelData.ElementAt(index);

Если ваша коллекция напечатана как IEnumerable вместо IEnumerable<T>, вам нужно будет использовать метод расширения Cast, прежде чем вы сможете вызвать ElementAt, например

var item = eLevelData.Cast<RMSRequestProcessor.RMSMedia>().ElementAt(index)

7 голосов
/ 26 мая 2010

Не знаю много о том, какое подмножество .NET BCL / LINQ доступно в Silverlight, но Skip должно сработать. Но, вообще говоря, он все еще использует foreach внутри:

var item = eLevelData.Skip(4 /* or 5 */).First();
...