Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 15th, 2012  |  syntax: None  |  size: 1.52 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to sort in a related table in ASP.NET MVC3
  2. var userQuery = from u in _db.Users
  3.                 where u.Username.ToLower().Contains(search.ToLower())
  4.                     || u.FirstName.ToLower().Contains(search.ToLower())
  5.                     || u.LastName.ToLower().Contains(search.ToLower())
  6.                 select u.FirmID;
  7.  
  8. var query = from f in _db.Firms
  9.             where f.Name.ToLower().Contains(search.ToLower())
  10.                 || f.Keyword.ToLower().Contains(search.ToLower())
  11.                     || f.KeywordList.ToLower().Contains(search.ToLower())
  12.                     || userQuery.Contains(f.ID)
  13.             select f;
  14.  
  15. // order by firm name
  16. query = query.OrderBy(f => f.Name);
  17.        
  18. public class User
  19. {
  20.     [Key]
  21.     public int ID { get; set; }
  22.  
  23.     public string Username { get; set; }
  24.     public string FirstName { get; set; }
  25.     public string LastName { get; set; }
  26.  
  27.     public int FirmID { get; set; }
  28.     [ForeignKey("FirmID")]
  29.     public virtual Firm Firm { get; set; }
  30. }
  31.        
  32. public class Firm
  33. {
  34.     [Key]
  35.     public int ID { get; set; }
  36.  
  37.     public string Keyword { get; set; }
  38.     public string KeywordList { get; set; }
  39.     public string Name { get; set; }
  40.  
  41.     public virtual ICollection<User> Users { get; set; }
  42. }
  43.        
  44. query.OrderBy(f => f.Name).Select(aux => new
  45. {
  46.    Firm = aux.Firm,
  47.    Users = aux.Users.OrderBy( x => x.Username )
  48. })
  49.        
  50. query.OrderBy(f => f.Name)
  51.      .ToList()
  52.      .ForEach(f => f.Users = f.Users.OrderBy(u => u.LastName).ToList() );
  53.        
  54. @foreach (var user in Model.Users.OrderBy(u => u.LastName)) {  }