foreach项似乎不在c#中

时间:2013-07-06 19:45:33

标签: c# foreach

if (Session["GrupId"] != null)
{
    var result= context.User.Where(s => s.DepartmentId == GrupId).Select(s => s.Id).ToList();

    foreach (var item in result)
    {
       result.Add(item);
    }               
}

如果我写项目它似乎没有foreach 我想写这样的东西

var something = context.ResultWhere(s=>s.UserId==item) 但项目似乎不是为什么?

我在等你的帮助谢谢

2 个答案:

答案 0 :(得分:5)

您:

foreach (var item in result)
{
   result.Add(item);
}               

在迭代它时,您无法修改List<>。它将从枚举器中引出一个异常,说它的底层集合已被修改。

答案 1 :(得分:0)

我也用Jeppe说出了我的话,我不知道你要按照确切的顺序添加相同的项目,但是如果你真的必须,如果你知道列表中的项目类型,那么这个例子我将发布将做你需要的但是再次,如果你已经有列表不知道为什么再次添加它们并按相同的顺序:

            int i = lst.Count - 1;
            foreach (YourClass item in lst.Reverse<YourClass>())
            {
                lst.Insert(i, item);
                lst.RemoveAt(i);
                i--;
            }

            //if you dont know the type make an array

            int i = countries.Count - 1;
            foreach (var item in lst.ToArray())
            {
               lst.Insert(i, item);
               lst.RemoveAt(i);
               i--;
            }

这是有效的,因为我们正在调用reverse,它将以相反的顺序检索新列表 在里面我们将它们添加到正确的位置并删除重复的