我这里有两个List集合 结构是这样的
ListA
-------------------
ID   MemberName   UniqueName
1    NULL       1
2    null       2
--------------------
ListB
--------------------
ID   MemberName
1    123
2    345
--------------------
我想把B的Name 赋到A中去
我这样写的代码 
List<A> ListA= new List<A>;
List<B> ListB = new List<B>;
 foreach (A Name in ListA)
                {
                    foreach (B Bname in Listb)
                    {
                        bool bol = false;
                        Name.MemberName = string.Empty;
                        if (Name.ID == Bname.ID)
                        {
                            bol = true;
                        }
                        if (bol == true)
                        {
                            Name.MemberName = Bname.MemberName;
                           
                        }                     
                    }
                   
                }
结果,只有第一行有数据,而且第二条数据读取出来的时候还把第一条覆盖了。。求高手指点

解决方案 »

  1.   

    饿  我只是在疑惑。   我记得。 foreach里面是不允许修改遍历集合中的值的。。用for循环来做会更加明了。  因为2次遍历。  结果是B的最后一条数据一致插入到所有A中。  
      

  2.   

    的确,1楼说得没错。
    如果代码运行没有问题,你可以在原来的代码中加一个break.if (bol == true)
      {
      Name.MemberName = Bname.MemberName;
        break;
      }
      

  3.   

    果然一个Break就好了   求高手解释,这是为什么呢?
      

  4.   

    List<A> ListA= new List<A>;
    List<B> ListB = new List<B>;
     foreach (A Name in ListA)
      {
      foreach (B Bname in Listb)
      {
       Name.MemberName =string.Empty;
       if (Name.ID == Bname.ID)
      { 
        Name.MemberName = Bname.MemberName;
        break;
      }
      }
     }楼主的代码可以优化下
      

  5.   

    Break 成功就跳出当前循环
      

  6.   

    试试这样foreach(B BName in Listb){
      foreach(B AName in Lista){
         if(BName.id==AName.id){
            AName.MemberName=BName.MemberName;
            break;
         }
      }
    }
      

  7.   

    加一个break,使其跳出循环。