.Net列表ForEach项目

Osv*_*ier 2 .net c# linq foreach list

我有2个对象:

public class ClassA
{
   public int Id
   public string name;

   public ClassB myObjectB;

}
public class ClassB
{
   public int Id
   public string name
}
Run Code Online (Sandbox Code Playgroud)

有<ClassA> <ClassB>的2个列表List1中的一些项目与Id上的项目匹配List2上的项目...我想设置objectB foreach项目...

foreach(ClassA item in List1)
{
   ClassB obj = (from b in List2 where b.Id == item.Id select b).SingleOrDefault()
   if(obj != null)
   {
       item.myObjectB = obj; 
       ////////break;    <- ignore this
   }
}
Run Code Online (Sandbox Code Playgroud)

这个解决方案适合我,但我只是想知道是否有更好的方法来做到这一点,而不是Foreach

谢谢大家的帮助!!!

Ree*_*sey 8

我认为foreach,在这种情况下,a实际上是适当的方法,因为你正在改变你的列表.但是,您可能会稍微简化一下代码:

foreach(ClassA item in List1)
{
    item.myObjectB = List2.FirstOrDefault(b => b.Id == item.Id);
}
Run Code Online (Sandbox Code Playgroud)

这将每次设置项目,但null如果没有匹配则将其设置为.如果您已经有项目myObjectB并将它们设置为null是不合适的,您可以使用:

foreach(ClassA item in List1)
{
    item.myObjectB = List2.FirstOrDefault(b => b.Id == item.Id) ?? item.myObjectB;
}
Run Code Online (Sandbox Code Playgroud)