using static System.Console;
using System.Collections.Generic;
using System.Linq;
public class Program {
public static void Main() {
var listaObj1 = new List<Objeto1>();
var listaObj2 = new List<Objeto2>();
var listaObj3 = new List<Objeto3>();
listaObj3.Add(new Objeto3 { PropObj3 = 1 });
listaObj3.Add(new Objeto3 { PropObj3 = 0 });
listaObj2.Add(new Objeto2 { PropObj2 = listaObj3 });
listaObj2.Add(new Objeto2 { PropObj2 = listaObj3 });
listaObj1.Add(new Objeto1 { PropObj1 = listaObj2 });
listaObj1.Add(new Objeto1 { PropObj1 = listaObj2 });
var resultado = listaObj1.SelectMany(o => o.PropObj1, (objeto1, objeto2) => new { objeto1, objeto2 })
.SelectMany(o => o.objeto2.PropObj2, (objeto2, objeto3) => new { objeto2, objeto3 })
.Where(o => o.objeto3.PropObj3 == 1).Select(o => new { o.objeto2.objeto1.PropObj1 }).ToList();
foreach(var i in resultado) {
WriteLine(i);
}
}
}
public class Objeto1 {
public List<Objeto2> PropObj1 {get; set;}
}
public class Objeto2 {
public List<Objeto3> PropObj2 {get; set;}
}
public class Objeto3 {
public int PropObj3 {get; set;}
}
//https://pt.stackoverflow.com/q/80066/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgkJCQkJCnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgewoJCXZhciBsaXN0YU9iajEgPSBuZXcgTGlzdDxPYmpldG8xPigpOwoJCXZhciBsaXN0YU9iajIgPSBuZXcgTGlzdDxPYmpldG8yPigpOwoJCXZhciBsaXN0YU9iajMgPSBuZXcgTGlzdDxPYmpldG8zPigpOwoJCWxpc3RhT2JqMy5BZGQobmV3IE9iamV0bzMgeyBQcm9wT2JqMyA9IDEgfSk7CgkJbGlzdGFPYmozLkFkZChuZXcgT2JqZXRvMyB7IFByb3BPYmozID0gMCB9KTsKCQlsaXN0YU9iajIuQWRkKG5ldyBPYmpldG8yIHsgUHJvcE9iajIgPSBsaXN0YU9iajMgfSk7CgkJbGlzdGFPYmoyLkFkZChuZXcgT2JqZXRvMiB7IFByb3BPYmoyID0gbGlzdGFPYmozIH0pOwoJCWxpc3RhT2JqMS5BZGQobmV3IE9iamV0bzEgeyBQcm9wT2JqMSA9IGxpc3RhT2JqMiB9KTsKCQlsaXN0YU9iajEuQWRkKG5ldyBPYmpldG8xIHsgUHJvcE9iajEgPSBsaXN0YU9iajIgfSk7CgkKCQl2YXIgcmVzdWx0YWRvID0gbGlzdGFPYmoxLlNlbGVjdE1hbnkobyA9PiBvLlByb3BPYmoxLCAob2JqZXRvMSwgb2JqZXRvMikgPT4gbmV3IHsgb2JqZXRvMSwgb2JqZXRvMiB9KQoJCQkgICAgLlNlbGVjdE1hbnkobyA9PiBvLm9iamV0bzIuUHJvcE9iajIsIChvYmpldG8yLCBvYmpldG8zKSA9PiBuZXcgeyBvYmpldG8yLCBvYmpldG8zIH0pCgkJCQkuV2hlcmUobyA9PiBvLm9iamV0bzMuUHJvcE9iajMgPT0gMSkuU2VsZWN0KG8gPT4gbmV3IHsgby5vYmpldG8yLm9iamV0bzEuUHJvcE9iajEgfSkuVG9MaXN0KCk7CgkJZm9yZWFjaCh2YXIgaSBpbiByZXN1bHRhZG8pIHsKCQkJV3JpdGVMaW5lKGkpOwoJCX0KCX0KfQoKcHVibGljIGNsYXNzIE9iamV0bzEgewogICBwdWJsaWMgTGlzdDxPYmpldG8yPiBQcm9wT2JqMSB7Z2V0OyBzZXQ7fQp9CgpwdWJsaWMgY2xhc3MgT2JqZXRvMiB7CiAgIHB1YmxpYyBMaXN0PE9iamV0bzM+IFByb3BPYmoyIHtnZXQ7IHNldDt9Cn0KCnB1YmxpYyBjbGFzcyBPYmpldG8zIHsKICAgcHVibGljIGludCBQcm9wT2JqMyB7Z2V0OyBzZXQ7fQp9CgovL2h0dHBzOi8vcHQuc3RhY2tvdmVyZmxvdy5jb20vcS84MDA2Ni8xMDE=