using System; using System.Text; using System.Linq; using System.Collections.Generic; public class Program { public enum LogStatus{ InProgress=1, FileNotFound=2, Success=3, Failed=4 } class LogDetails { public string Message; public LogStatus LogStatus; } class Log { public List LogDetails; public string Title; } public static void Main(string[] args) { var logs = new List(){ new Log{ Title="A", LogDetails=new List(){ new LogDetails{ Message="AA", LogStatus = LogStatus.FileNotFound }, new LogDetails{ Message="AB", LogStatus = LogStatus.Success }, new LogDetails{ Message="AC", LogStatus = LogStatus.Failed } } }, new Log{ Title="B", LogDetails=new List(){ new LogDetails{ Message="BA", LogStatus = LogStatus.InProgress }, new LogDetails{ Message="BB", LogStatus = LogStatus.Success } } } }; List failedLogs = logs .Where(l => l.LogDetails.Any(ld => ld.LogStatus==LogStatus.Failed)) .ToList(); foreach(Log log in failedLogs) Console.WriteLine("Failed log found: Title={0} Details={1}" , log.Title , string.Join(", ",log.LogDetails.Select(d => d.Message).ToArray())); } }