2011-12-06 18 views
5

Tôi có một LINQ (Entity Framework) Query nhưLINQ Sắp xếp theo khi tên cột là năng động và thông qua như là một chuỗi đến một chức năng

function getData(string col_to_sort , bool IsAscending , int pageNo , int pageSize) 
{ 
    context.table_name.Skip(pageNo*pageSize).Take(pageSize).ToArray(); 
} 

gì tôi muốn là nếu tôi vượt qua tên của cột như một tham số cho hàm và thứ tự nó cũng sắp xếp truy vấn của tôi.

Vì tên cột của tôi sẽ là một chuỗi nên chúng tôi có thể cần phải chuyển đổi nó thành ObjectQuery.

Làm cách nào tôi có thể đạt được điều này?

Any help is appreciated

Trả lời

6

Bạn có thể sử dụng Dynamic Linq:

string direction = IsAscending ? " ASC" : " DESC"; 
context.table_name.OrderBy(col_to_sort + direction).Skip(pageNo*pageSize).Take(pageSize).ToArray(); 
+0

nó làm việc cho tôi nhưng tôi cần phải sử dụng nó như "OrderBy (" it.id desc ")"? chúng ta luôn luôn cần phải sử dụng "nó" nó là gì – Moons

+0

uh, không chắc chắn ... nó không có vẻ là cần thiết trong các ví dụ trên blog của Scott –

+1

Cập nhật sau nhiều năm: có một số libs mới trên github thông qua nuget . một trong số đó là https://github.com/kahanu/System.Linq.Dynamic –

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