Невозможно применить индексирование с [] к выражению типа "System.Collections.Generic.ICollection <int> в mvc-контроллере
public ActionResult addstandardpackage1(ICollection<int> SingleStay,ICollection<int> DOUBLESTAY,ICollection<int> TRIBLESTAY,ICollection<int> FAMILYSTAY,ICollection<int> EXTRABED)
{
var s = SingleStay;
for (int i = 0; i < SingleStay.Count; i++ )
{
var cal = SingleStay[i];
}
foreach (var key in SingleStay)
{
var value = key;
}
}
В for Loop я получаю ошибку, например, Не могу применить индексацию с [] к выражению типа. Но мне нужно, чтобы для цикла, для каждого я получаю. потому что на основе цикла я я свяжу детали с другими списками коллекций. Пожалуйста, помогите мне.
Я получаю ошибку в var cal=Singlestay[i]
.
Ответы
Ответ 1
Просто преобразуйте его в массив:
var s = SingleStay.ToArray();
обратите внимание, что это потребует дополнительной памяти.
Лучше всего было бы получить Array или любую другую коллекционную форму, которая в первую очередь поддерживает индексатор.
Еще один способ - реализовать его с помощью индексной переменной:
var s = SingleStay;
int i = 0;
foreach (var cal in s)
{
//do your stuff (Note: if you use 'continue;' here increment i before)
i++;
}
Ответ 2
ICollection
не выставляет indexer
. У вас есть три варианта:
- Измените
ICollection
на IList
- Используйте
ElementAt
, который наследуется от IEnumerable
. Но имейте в виду - он не может быть эффективным.
- Evalute передал коллекцию в список (
ToList()
)
ICollection (и его открытые методы) в msdn.
Ответ 3
или вы можете использовать
foreach (var item in Collection)
{
..................
}