fork(3) download
  1. using System;
  2. using System.Linq;
  3.  
  4. public class Test
  5. {
  6. class Media
  7. {
  8. public int GalleryId { get; set; }
  9. public string Name { get; set; }
  10. public int SortOrder { get; set; }
  11. }
  12.  
  13. class Gallery
  14. {
  15. public int GalleryId { get; set; }
  16. public string Name { get; set; }
  17. public int SortOrder { get; set; }
  18. }
  19.  
  20. public static void Main()
  21. {
  22. Gallery[] gs = new Gallery[] { new Gallery { GalleryId = 0, Name = "g0", SortOrder = 1 }, new Gallery { GalleryId = 1, Name = "g1", SortOrder = 0 } };
  23. Media[] ms = new Media[] { new Media { GalleryId = 0, Name = "m0", SortOrder = 1}, new Media { GalleryId = 0, Name = "m1", SortOrder = 0 }, new Media { GalleryId = 1, Name = "m2" } };
  24.  
  25. var result = ms
  26. .OrderBy(m => m.SortOrder)
  27. .GroupBy(m => m.GalleryId)
  28. .Join(
  29. gs,
  30. group => group.Key,
  31. g => g.GalleryId,
  32. (group, g) => new { Gallery = g, Media = group })
  33. .OrderBy(x => x.Gallery.SortOrder);
  34.  
  35. foreach (var x in result)
  36. {
  37. Console.WriteLine("Gallery: " + x.Gallery.Name);
  38. foreach (var m in x.Media)
  39. {
  40. Console.WriteLine(" Media: " + m.Name);
  41. }
  42. }
  43. }
  44. }
Success #stdin #stdout 0.06s 34256KB
stdin
Standard input is empty
stdout
Gallery: g1
 Media: m2
Gallery: g0
 Media: m1
 Media: m0