using System.Collections.Generic;
public class CheckingPoint
public string Num { get; set; }
public string Detail { get; set; }
public List<ContentGuide> Contents { get; set; }
public int Result { get; set; }
public int BlankLineCount { get; set; }
public class ContentGuide
public string Num { get; set; }
public string Title { get; set; }
public int Result { get; set; }
public string Observation { get; set; }
public string Type { get; set; }
public bool IsEditable { get; set; }
public bool CommentMandatory { get; set; }
public string UpdateAuthor { get; set; }
public string UpdateVerificateur { get; set; }
public string UpdateComment { get; set; }
public static void Main() {
var json = "[{\"Num\":\"1\",\"Detail\":\"VERIFICATIONS PRELIMINAIRES\",\"Contents\":[{\"Num\":\"1a\",\"Title\":\"Présence et applicabilité du DMOS à relever\",\"Result\":1,\"Observation\":\"dfg\",\"Type\":0,\"IsEditable\":true,\"CommentMandatory\":false,\"UpdateAuthor\":\"\",\"UpdateVerificateur\":\"\",\"UpdateComment\":\"\",\"Description\":\"1a. Présence et applicabilité du DMOSrelever\",\"Id\":18,\"LastUpdate\":\"2019-09-24T16:10:54.580624\",\"IsDeleted\":false,\"DateDeleted\":\"\"}],\"Result\":0,\"Title\":\"1. VERIFICATIONS PRELIMINAIRES \",\"BlankLineCount\":6,\"Id\":4,\"LastUpdate\":\"2019-09-24T16:10:54.580624\",\"IsDeleted\":false,\"DateDeleted\":null}]";
List<CheckingPoint> checkingPoint = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CheckingPoint>>(json);
var resultC = checkingPoint.All(w => w.Contents.Where(c => c.Result != 2 ).All(c => c.Observation == ""));
Console.WriteLine(resultC);
var query = checkingPoint.All(cp => cp.Contents.Where(ctt => ctt.Result == 1 || ctt.Result == 2).All(c => c.CommentMandatory || string.IsNullOrEmpty(c.Observation)));
Console.WriteLine(query);