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
谢谢大家的帮助!!!
我认为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)