kiw*_*jus 2 c# linq asp.net-mvc dynamic-typing
我正在尝试动态订购产品列表.
Product:
price (int)
name (string)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已成功获得以下内容:
string columnToOrderBy = "price";
ParameterExpression param = Expression.Parameter(typeof(Product), "p");
var ordering = Expression.Lambda<Func<Product, double>>(Expression.Property(param, columnToOrderBy), param);
Run Code Online (Sandbox Code Playgroud)
这适用于按价格排序,但由于列类型,按名称排序时无效.
Expression.Lambda<Func<Product, double>>
Run Code Online (Sandbox Code Playgroud)
无论如何都要在Func方法中获取列的类型来设置它?
看看Dynamic LINQ,Scott Gu在这里发了一篇很棒的帖子http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-动态查询library.aspx
这让它变得如此简单
query = query.OrderBy(columnName);
Run Code Online (Sandbox Code Playgroud)
要么
//orderby descending
query = query.OrderBy(columnName + " DESC");
Run Code Online (Sandbox Code Playgroud)
当你不需要时,没有必要乱用手动操作表达式树.使用动态LINQ将使您的代码更易于理解和维护.
您现在可以将其安装为Nuget包,但它们似乎都不是来自官方来源(在撰写本文时).
这是一个包含Scott Gu提供的代码的vanilla软件包.
这是Scott代码的一个分支,已经扩展到包含更多功能.它似乎正在积极发展,看起来很有趣.
| 归档时间: |
|
| 查看次数: |
4212 次 |
| 最近记录: |