code_junkie

Help with linq orderby on class aggregate relationships

Nov 13th, 2011
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. public class Comment
  2. {
  3. public string Message {get; set;}
  4. public DateTime Created {get; set;}
  5. }
  6.  
  7. public class Post
  8. {
  9. public int PostId {get; set;}
  10. public string Content {get; set;}
  11. public IList<Comment> Comments {get; set;}
  12. }
  13.  
  14. var query = from p in _repository.GetPosts()
  15. where p.PostId == id
  16. orderby p.Comments.Select(x => x.Created)
  17. select p;
  18.  
  19. return query.Single();
  20.  
  21. orderby p.Comments.Max(x=>x.Created)
  22.  
  23. Post post = ...
  24.  
  25. post.Comments = post.Comments.OrderBy(x=>x.Created).ToList();
  26.  
  27. post.Comments.Sort((x, y) => (x.Created.CompareTo(y.Created)));
  28.  
  29. post.Comments.Sort(x=>x.Created);
  30.  
  31. public static void Sort<TSource, TKey>(
  32. this List<TSource> source,
  33. Func<TSource, TKey> selector)
  34. {
  35. var comparer = Comparer<TKey>.Default;
  36. source.Sort((x, y) => comparer.Compare(selector(x), selector(y)));
  37. }
  38.  
  39. p.Comments.Select(x => x.Created)
  40.  
  41. p.Comments.Max(x => x.Created)
  42.  
  43. var query = from p in _repository.GetPosts()
  44. where p.PostId == id
  45. orderby {
  46. Comment comment = p.Comments.FirstOrDefault();
  47. return comment == null ? DateTime.MinValue : comment.Created;
  48. }
  49. select p;
  50.  
  51. p.Comments = p.Comments.OrderBy(x => x.Created).ToList();
  52.  
  53. var query = from p in _repository.GetPosts()
  54. where p.PostId == id
  55. orderby p.Comments.Select(x => x.Created)
  56. select p;
  57.  
  58. var ret = query.Single();
  59. ret.Comments = ret.Comments.OrderBy(x => x.Created).ToList();
  60. return ret;
Add Comment
Please, Sign In to add comment