2012-06-07 34 views
9

Tôi đang cố gắng tìm ra cách sử dụng tham số orderBy này. Tôi không chắc chắn những gì tôi đang giả sử để vượt qua trong.Cách sử dụng Order By trong ví dụ MSDN này

http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and-unit-of-work-patterns-in-an-asp-net-mvc-application

public virtual IEnumerable<TEntity> Get(
     Expression<Func<TEntity, bool>> filter = null, 
     Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, 
     string includeProperties = "") 
    { 
     IQueryable<TEntity> query = dbSet; 

     if (filter != null) 
     { 
      query = query.Where(filter); 
     } 

     foreach (var includeProperty in includeProperties.Split 
      (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) 
     { 
      query = query.Include(includeProperty); 
     } 

     if (orderBy != null) 
     { 
      return orderBy(query).ToList(); 
     } 
     else 
     { 
      return query.ToList(); 
     } 
    } 

Trả lời

14

Nếu bạn đọc này từ bài viết MSDN

"Mã Func, IOrderedQueryable> orderBy cũng có nghĩa là người gọi sẽ cung cấp nhưng trong trường hợp này, đầu vào cho biểu thức là một đối tượng IQueryable cho kiểu TEntity, biểu thức sẽ trả về một phiên bản có thứ tự của đối tượng IQueryable đó, ví dụ, nếu kho lưu trữ được khởi tạo cho kiểu thực thể Student, mã trong phương thức gọi có thể chỉ định q => q.OrderBy (s => s.LastName) cho lệnh orderBy paramete r. "

Câu nói của nó khi bạn gọi hàm Get bạn nên cung cấp biểu thức lambda sẽ là hàm Func hoặc hàm trên IQueryable cung cấp IOrderedQueryable.

Vì vậy, đối với đối tượng Sinh viên được sử dụng trong bài viết bạn sử dụng.

var students = repository.Get(x => x.FirstName = "Bob",q => q.OrderBy(s => s.LastName)); 
+1

Thực ra, tôi đã đọc, nhưng tôi không hiểu. Tôi cứ bị lỗi. Intellisense thực sự nhầm lẫn với tôi là lý do tại sao tôi không nhận được câu trả lời đúng. Cảm ơn. – xivo

+0

Các bạn có biết cách đặt OrderBy thành ASC hoặc DESC không? – user1477388

+1

@ user1477388 es có một phương thức OrderBy cũng là phương thức asc và OrderByDescending. –

Các vấn đề liên quan