无法将带有的索引应用于mvc控制器中类型为“System.Collections.Generic.ICollection 的表达式”

public ActionResult addstandardpackage1(ICollection SingleStay,ICollection DOUBLESTAY,ICollection TRIBLESTAY,ICollection FAMILYSTAY,ICollection 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循环中,我得到的错误就像无法将带有[]的索引应用于类型的表达式但我需要在for循环中,为每个我得到的。 因为基于for循环我会将细节与其他集合列表绑定。 请帮我。

我在var cal=Singlestay[i]收到错误。

只需将其转换为数组:

 var s = SingleStay.ToArray(); 

请注意,这会消耗额外的内存。

更好的方法是首先获得一个Array或任何其他支持索引器的集合forms。

另一种方法是使用索引变量实现它:

  var s = SingleStay; int i = 0; foreach (var cal in s) { //do your stuff (Note: if you use 'continue;' here increment i before) i++; } 

ICollection不会暴露indexer 。 你有三个选择:

  1. ICollection更改为IList
  2. 使用从IEnumerableinheritance的ElementAt 。 但请注意 – 它可能效率不高。
  3. Evalute将集合传递给列表( ToList()

msdn上的ICollection (及其公开的方法)。