asp.net-mvc-3 – 如何将ObjectResult转换为IQueryable?
发布时间:2020-12-16 07:12:10 所属栏目:asp.Net 来源:网络整理
导读:我在asp.net mvc 3.0应用程序中使用实体框架.我正在使用表值函数在我的一个数据库表上进行全文搜索.我已将返回类型设置为Request类型的对象.然后,我将结果提供给表达式构建器,该构建器对用户有权访问的实体列表中的“请求”执行包含操作.这是代码. Listint U
我在asp.net mvc 3.0应用程序中使用实体框架.我正在使用表值函数在我的一个数据库表上进行全文搜索.我已将返回类型设置为Request类型的对象.然后,我将结果提供给表达式构建器,该构建器对用户有权访问的实体列表中的“请求”执行包含操作.这是代码.
List<int> UserEntities = db.UserEntities .Where(x => x.UserID.Equals(usr.ID)) .Select(x => x.EntityID).ToList(); var requests = db.SearchRequest(keyword) .Where(BuildContainsExpression<Request,int>(x => x.EntityID,UserEntities)); //Expression Builder for Contains SQL functionality static Expression<Func<TElement,bool>> BuildContainsExpression<TElement,TValue>( Expression<Func<TElement,TValue>> valueSelector,IEnumerable<TValue> values) { if (null == valueSelector) { throw new ArgumentNullException("valueSelector"); } if (null == values) { throw new ArgumentNullException("values"); } ParameterExpression p = valueSelector.Parameters.Single(); // p => valueSelector(p) == values[0] || valueSelector(p) == ... if (!values.Any()) { return e => false; } var equals = values.Select( value => (Expression)Expression.Equal( valueSelector.Body,Expression.Constant(value,typeof(TValue)))); var body = equals.Aggregate<Expression>( (accumulate,equal) => Expression.Or(accumulate,equal)); return Expression.Lambda<Func<TElement,bool>>(body,p); } 第二行不会建立.编译器告诉我,SearchRequest过程正在返回ObjectResult但需要IQueryable.如何将ObjectResult转换为IQueryable? 解决方法
只需使用扩展方法
Queryable.AsQueryable<T>() .
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – ASP.MVC CORE网站的最大上传大小
- asp.net – 模型绑定与禁用文本框
- asp.net-mvc-3 – 自定义成员资格提供程序和统一依赖注入
- asp.net – 从网页打印条形码标签
- asp.net-mvc-3 – MVC默认重定向错误页面并不总是显示
- asp.net – Telerik RadDatePicker在2030年之后没有收到日期
- C# 快速高效率复制对象另一种方式 表达式树
- asp.net-core – 配置ASP.Net Core以使用OIDC对Thinktectur
- asp.net-mvc – ASP.NET MVC RC中的Html.Image在哪里?
- mvc项目架构分享系列之架构搭建初步 架构搭建初
推荐文章
站长推荐
热点阅读