为了账号安全,请及时绑定邮箱和手机立即绑定

c# 表达式树 问题 。求大侠帮忙改造一下 谢谢

c# 表达式树 问题 。求大侠帮忙改造一下 谢谢

慕姐8265434 2018-12-06 13:25:52
这个是jQuery-QueryBuilder的一个插件 构造查询。  UI地址 http://querybuilder.js.org/index.html 对于的c#代码 转化。 https://github.com/castle-it/dynamic-linq-query-builder  上面一段只是介绍 可以忽略 问题开始 了。 这个是js在前台转化的 。希望改成c# 作者也提提供了c# 但是他用的是表达式树 本人不是特别的熟悉 把他的关键代码贴出来   /// <summary> /// Gets the filtered collection after applying the provided filter rules. /// Returns the string representation for diagnostic purposes. /// </summary> /// <typeparam name="T">The generic type.</typeparam> /// <param name="queryable">The queryable.</param> /// <param name="filterRule">The filter rule.</param> /// <param name="parsedQuery">The parsed query.</param> /// <param name="useIndexedProperty">Whether or not to use indexed property</param> /// <param name="indexedPropertyName">The indexable property to use</param> /// <returns>Filtered IQueryable.</returns> public static IQueryable<T> BuildQuery<T>(this IQueryable<T> queryable, FilterRule filterRule, out string parsedQuery, bool useIndexedProperty = false, string indexedPropertyName = null) { if (filterRule == null) { parsedQuery = ""; return queryable; } var pe = Expression.Parameter(typeof(T), "item"); var expressionTree = BuildExpressionTree(pe, filterRule, useIndexedProperty, indexedPropertyName); if (expressionTree == null) { parsedQuery = ""; return queryable; } parsedQuery = expressionTree.ToString(); var whereCallExpression = Expression.Call( typeof(Queryable), "Where", new[] { queryable.ElementType }, queryable.Expression, Expression.Lambda<Func<T, bool>>(expressionTree, pe)); var filteredResults = queryable.Provider.CreateQuery<T>(whereCallExpression); return filteredResults; }  
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

你可以了解一下Specification模式 ,Specification是基于LINQ表达式的  Linq表达式构建器 。

//下面是一段用法示例

ISpecification<Model> spec = SpecificationBuilder.Create<Model>();
spec.Equals(o => o.ID, id);
spec.LessThan(o => o.IsDel, 0);
_list.where(sepc);

查看完整回答
反对 回复 2018-12-16
  • 1 回答
  • 0 关注
  • 504 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号