如果和其他LINQ

时间:2015-05-06 04:07:49

标签: 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>();
}

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

List<class_C> classCObjects=new List<class_C>();

我想根据某些条件为true的每个实例分配falseclass_A.isCheckedclass_A。如果ID为100,则应分配false。否则,它应该分配true

这是我现在的代码:

classCObjects.ToList().ForEach(a=>a.classBObjects.ForEach(b=>b.classAObjects.ForEach(x=>x.isChecked=true)));

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

2 个答案:

答案 0 :(得分:5)

classCObjects.ToList()
             .ForEach(a=>a.classBObjects
                 .ForEach(b=>b.classAObjects
                     .ForEach(x=>x.isChecked=x.id != 100)));

顺便说一下,在集合上调用ToList是很难看的,所以你可以使用ForEach。相反,只需迭代:

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

答案 1 :(得分:1)

你在找这样的东西吗?

classCObjects.ToList().ForEach(
   a=>a.classBObjects.ForEach(
     b=>b.classAObjects.ForEach(
       x=>x.isChecked= x.id != 100)));