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> LogDetails;
public string Title;
}
public static void Main(string[] args)
{
var logs = new List<Log>(){
new Log{
Title="A",
LogDetails=new List<LogDetails>(){
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<LogDetails>(){
new LogDetails{
Message="BA",
LogStatus = LogStatus.InProgress
},
new LogDetails{
Message="BB",
LogStatus = LogStatus.Success
}
}
}
};
List<Log> 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}"
, string.
Join(", ",log.
LogDetails.
Select(d
=> d.
Message).
ToArray())); }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dDsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljOwogICAgICAgIApwdWJsaWMgY2xhc3MgUHJvZ3JhbQp7CiAgICAKICAgIHB1YmxpYyBlbnVtIExvZ1N0YXR1c3sKICAgICAgICAgICAgSW5Qcm9ncmVzcz0xLCAKICAgICAgICAgICAgRmlsZU5vdEZvdW5kPTIsCiAgICAgICAgICAgIFN1Y2Nlc3M9MywKICAgICAgICAgICAgRmFpbGVkPTQgCiAgICAgICAgfQoKICAgICAgICBjbGFzcyBMb2dEZXRhaWxzCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIE1lc3NhZ2U7CiAgICAgICAgICAgIHB1YmxpYyBMb2dTdGF0dXMgTG9nU3RhdHVzOwogICAgICAgIH0KCiAgICAgICAgY2xhc3MgTG9nCiAgICAgICAgewogICAgICAgICAgICBwdWJsaWMgTGlzdDxMb2dEZXRhaWxzPiBMb2dEZXRhaWxzOwogICAgICAgICAgICBwdWJsaWMgc3RyaW5nIFRpdGxlOwogICAgICAgIH0KICAgICAgICAKIApwdWJsaWMgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQp7CiAgICB2YXIgbG9ncyA9IG5ldyBMaXN0PExvZz4oKXsKICAgIG5ldyBMb2d7CiAgICAgICAgVGl0bGU9IkEiLAogICAgICAgIExvZ0RldGFpbHM9bmV3IExpc3Q8TG9nRGV0YWlscz4oKXsKICAgICAgICAgICAgbmV3IExvZ0RldGFpbHN7CiAgICAgICAgICAgICAgICBNZXNzYWdlPSJBQSIsCiAgICAgICAgICAgICAgICBMb2dTdGF0dXMgPSBMb2dTdGF0dXMuRmlsZU5vdEZvdW5kCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG5ldyBMb2dEZXRhaWxzewogICAgICAgICAgICAgICAgTWVzc2FnZT0iQUIiLAogICAgICAgICAgICAgICAgTG9nU3RhdHVzID0gTG9nU3RhdHVzLlN1Y2Nlc3MKICAgICAgICAgICAgfSwKICAgICAgICAgICAgbmV3IExvZ0RldGFpbHN7CiAgICAgICAgICAgICAgICBNZXNzYWdlPSJBQyIsCiAgICAgICAgICAgICAgICBMb2dTdGF0dXMgPSBMb2dTdGF0dXMuRmFpbGVkCiAgICAgICAgICAgIH0KICAgICAgICB9IAogICAgfSwKICAgIG5ldyBMb2d7CiAgICAgICAgVGl0bGU9IkIiLAogICAgICAgIExvZ0RldGFpbHM9bmV3IExpc3Q8TG9nRGV0YWlscz4oKXsKICAgICAgICAgICAgbmV3IExvZ0RldGFpbHN7CiAgICAgICAgICAgICAgICBNZXNzYWdlPSJCQSIsCiAgICAgICAgICAgICAgICBMb2dTdGF0dXMgPSBMb2dTdGF0dXMuSW5Qcm9ncmVzcwogICAgICAgICAgICB9LAogICAgICAgICAgICBuZXcgTG9nRGV0YWlsc3sKICAgICAgICAgICAgICAgIE1lc3NhZ2U9IkJCIiwKICAgICAgICAgICAgICAgIExvZ1N0YXR1cyA9IExvZ1N0YXR1cy5TdWNjZXNzCiAgICAgICAgICAgIH0KICAgICAgICB9IAogICAgfQp9OwoKTGlzdDxMb2c+IGZhaWxlZExvZ3MgPSBsb2dzCiAgICAuV2hlcmUobCA9PiBsLkxvZ0RldGFpbHMuQW55KGxkID0+IGxkLkxvZ1N0YXR1cz09TG9nU3RhdHVzLkZhaWxlZCkpCiAgICAuVG9MaXN0KCk7CiAgICAKICAgIGZvcmVhY2goTG9nIGxvZyBpbiBmYWlsZWRMb2dzKQogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJGYWlsZWQgbG9nIGZvdW5kOiBUaXRsZT17MH0gRGV0YWlscz17MX0iCiAgICAgICAgLCBsb2cuVGl0bGUKICAgICAgICAsIHN0cmluZy5Kb2luKCIsICIsbG9nLkxvZ0RldGFpbHMuU2VsZWN0KGQgPT4gZC5NZXNzYWdlKS5Ub0FycmF5KCkpKTsKfQp9