如果和其他LINQ

nid*_*ndo 0 c# linq

我有一个类结构,如下所示,

class class_A
{
    public bool isChecked;
    public int id;        
}

class class_B
{
    List<class_A> classAObjects=new List<class_A>();
}

class class_C
{
    List<class_B> classBObjects=new List<class_B>();
}
Run Code Online (Sandbox Code Playgroud)

并有一个从class_C创建的对象列表,

List<class_C> classCObjects=new List<class_C>();
Run Code Online (Sandbox Code Playgroud)

我想分配truefalseclass_A.isChecked为每个实例class_A基于一些条件.如果ID是100,那么它应该分配false.否则,它应该分配true.

这是我现在的代码:

classCObjects.ToList().ForEach(a=>a.classBObjects.ForEach(b=>b.classAObjects.ForEach(x=>x.isChecked=true)));
Run Code Online (Sandbox Code Playgroud)

以上分配true给所有人.有谁知道如何得到我需要的东西?

Joh*_*ers 5

classCObjects.ToList()
             .ForEach(a=>a.classBObjects
                 .ForEach(b=>b.classAObjects
                     .ForEach(x=>x.isChecked=x.id != 100)));
Run Code Online (Sandbox Code Playgroud)

顺便说一句,在集合上调用ToList是非常难看的,这样你就可以使用了ForEach.相反,只需迭代:

foreach (var a in classCObjects) {
    foreach (var b in a.classBObjects) {
        foreach (var x in b.classAObjects) {
            x.isChecked = x.id != 100;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)