无法将带有的索引应用于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
。 你有三个选择:
- 将
ICollection
更改为IList
- 使用从
IEnumerable
inheritance的ElementAt
。 但请注意 – 它可能效率不高。 - Evalute将集合传递给列表(
ToList()
)
msdn上的ICollection (及其公开的方法)。