2011-08-31 11 views
0

我有一個已知類型的對象的linq查詢,我需要基於對象的屬性對它進行排序。問題是我只知道運行時的屬性名稱和字符串。如何在LINQ to Entities(EF4.1)中進行OrderBy時,我只知道運行時的屬性名稱?

ex。

IQueryable<Thing> thing = from t in ctx.Things select t; 
t.OrderBy(t => t.Name); // This would work if I knew the property at compile time... 
t.OrderBy("Name asc"); // But this is what I really need! and it doesn't work. 

有沒有辦法爲LINQ to Entities做到這一點?我使用實體框架4.1

+2

看到這個問題http://stackoverflow.com/questions/307512/how-do-i-apply-orderby-on-an-iqueryable-using-a-string-column-name -within-a-gener#308561 –

+0

謝謝,那應該可以做到。 – codemonkey

回答

-1

有兩種

  1. .OrderBy(m => m.Name)
  2. .OrderByDescending(m => m.Name)

第一個代表升序,另一個下降。

希望它有幫助。

試試這個吧!讓我們來看看,如果可以幫助

Expression orderByProperty = Expression.Property(prm, sortBy); 

    // get the paged records 
    IQueryable<PostingListItemDto> query = be.buskerPosting 
    .Where(posting => posting.buskerAccount.cmsMember.nodeId == m.Id) 
    .OrderBy(orderByExpression) 
+0

我不知道編譯時的屬性名稱,所以這對我不起作用。 – codemonkey

相關問題