2009-10-22 145 views
0

我想排序在ASP.NET中使用GridView的实体列表,但我似乎无法得到它遵循示例工作。我在我的实体上有一个名为Name的属性,我试着按指定的列进行排序(如果给出),或者如果sortExpression为空,则列名称列。实体框架和排序

public static List<Product> GetProducts(int startRowIndex, int maximumRows, string sortExpression) { 
    using(var context = new ShopEntities()) { 
     var products = context.Products; 
     products.OrderBy("it."+(string.IsNullOrEmpty(sortExpression) ? "Name" : sortExpression)) 
             .Skip(startRowIndex) 
             .Take(maximumRows); 
     return products.ToList(); 
    } 
} 

我不能把它排序。唯一的其他选项似乎是在实体中的每个属性上使用lambda来切换属性名称。

回答

2

OrderBy不改变表达式。它会返回一个代码忽略的新的表达式。将您的代码更改为:

products = products.OrderBy("it."+ //... 
+0

谢谢,很难找到。我不确定的另一件事是“it”前缀。谷歌很难谷歌,因为它是最常用的词之一,但它只是指实体? – Echilon 2009-10-22 13:42:58

+0

是的,“它”是实体。这仅适用于查询生成器方法。 – 2009-10-22 13:51:18