using System.Collections.Generic;
public static void Main()
""name"": ""John Smith"",
""id"": ""10206512123464061""
""message"": ""Test Comment 1 string value"",
""id"": ""1571234466083854""
""before"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD"",
""after"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD""
""name"": ""Ken Johnson"",
""id"": ""1720261242234464""
""message"": ""I like this photo"",
""id"": ""1029357829789345""
""name"": ""Jim Robertson"",
""id"": ""21217623234575172""
""message"": ""This here is another test comment"",
""id"": ""1672244567093955""
""before"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD"",
""after"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD""
""name"": ""John Smith"",
""id"": ""10206512123464061""
""message"": ""Blah blah blah nothing to see here"",
""id"": ""1496736878083876""
""name"": ""Fred Jones"",
""id"": ""1976365234643531""
""message"": ""The only way to know if something works is to test it."",
""id"": ""1571234958398554""
""before"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD"",
""after"": ""WTI5dGJXVnVkRjlqZAFhKemIzSTZANVFUzTlRVNU1EUTJOakE0TXpnMU5Eb3hORGN6TkRZAMk5EWTQZD""
RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
var comments = GetComments(root, "test");
Console.WriteLine(string.Join("\r\n", comments));
public static List<string> GetComments(RootObject root, string keyword)
.SelectMany(a => a.photos.data, (a,p) => new { Album = a.name, Comments = p.comments })
.Where(p => p.Comments != null)
.SelectMany(p => p.Comments.data, (p,c) => new { Album = p.Album, From = c.from, Message = c.message })
.Where(c => c.Message.IndexOf(keyword, StringComparison.OrdinalIgnoreCase) >= 0)
.Select(c => c.From.name + " - " + c.Album + " - " + c.Message)
public string name { get; set; }
public string id { get; set; }
public From from { get; set; }
public string message { get; set; }
public string id { get; set; }
public string before { get; set; }
public string after { get; set; }
public Cursors cursors { get; set; }
public List<Datum3> data { get; set; }
public Paging paging { get; set; }
public string id { get; set; }
public Comments comments { get; set; }
public string before { get; set; }
public string after { get; set; }
public Cursors2 cursors { get; set; }
public List<Datum2> data { get; set; }
public Paging2 paging { get; set; }
public string name { get; set; }
public Photos photos { get; set; }
public string id { get; set; }
public string before { get; set; }
public string after { get; set; }
public Cursors3 cursors { get; set; }
public List<Datum> data { get; set; }
public Paging3 paging { get; set; }
public Albums albums { get; set; }
public string id { get; set; }