【发布时间】:2014-10-14 22:28:57
【问题描述】:
我已将我的 MVC 应用程序从 linq-to-Sql 迁移到 EF 6.1.1,并从 .Net Framework 4.0 迁移到 4.5.1。我使用以下内容从列表中删除项目:
List<int> idsToKeep = new List<int>();
for (int i = 0; i < visit.Client.Count; i++)
{
Client om = visit.Client[i];
if (om.ClientId == 0)
continue;
bool itemExists = false;
foreach (int id in idsToKeep)
if (om.ClientId == id)
itemExists = true;
if (!itemExists)
{
visit.Client.RemoveAt(i);
i--;
}
}
return errors;
}
最初我收到此错误:
cannot apply indexing with to an expression of type system.collections.generic.iCollection
在这一行:
Client om = visit.Client[i];
改成:
Client om = visit.Client.ElementAt(i);
我不确定这是否正确,但没有出现任何错误;问题是我无法在这一行中解决 RemoveAt:
visit.Client.RemoveAt(i);
非常感谢您的建议
【问题讨论】:
-
你不应该改变你正在迭代的集合。
-
客户端是
Collection而不是IList<T>。没有数组,所以没有索引位置的概念。 -
请格式化您的代码
-
你说这是在 .NET 4.0 上工作的,
Client的类型完全相同?这不可能。
标签: c# .net asp.net-mvc linq entity-framework