最近mate9Pro电脑老自动关机是什么原因,什么情况

2465人阅读
Entity Framework(5)
问题背景:
&&&&&&& public IQueryable&T_Bas_PlanInfo& GetT_Bas_PlanInfoByCondition(List&string& conditions)
&&&&&&&&&&& var results = this.ObjectContext.T_Bas_PlanInfo
&&&&&&&&&&&&&&& .Where(e =& conditions.Any(e2 =& e.plangeneral.Contains(e2)));
&&&&&&&&&&&
在T_Bas_PlanInfo中的plangeneral列中查找包含conditions中任意元素的项,结果返回空(实际应该非空)。
解决方案:
对于conditions这种动态数组,需要表达式树动态生成查询语句。
扩展wherein
&&&&&& public static IQueryable&TEntity& WhereIn&TEntity, TValue&
&&&&&&& this ObjectQuery&TEntity& query,
&&&&&&& Expression&Func&TEntity, TValue&& selector,
&&&&&&& IEnumerable&TValue& collection
&&&&&&&&&&& if (selector == null) throw new ArgumentNullException(&selector&);
&&&&&&&&&&& if (collection == null) throw new ArgumentNullException(&collection&);
&&&&&&&&&&& ParameterExpression p = selector.Parameters.Single();
&&&&&&&&&&& if (!collection.Any())
&&&&&&&&&&& IEnumerable&Expression& equals = collection.Select(value =&
&&&&&&&&&&&&&& (Expression)Expression.Call(selector.Body,
&&&&&&&&&&&&&&&&&&& typeof(string).GetMethod(&Contains&),
&&&&&&&&&&&&&&&&&&& Expression.Constant(value, typeof(TValue))));
&&&&&&&&&&& Expression body = equals.Aggregate((accumulate, equal) =&
&&&&&&&&&&&&&&& Expression.Or(accumulate, equal));
&&&&&&&&&&& return query.Where(Expression.Lambda&Func&TEntity, bool&&(body, p));
&&&&&&& public static IQueryable&TEntity& WhereIn&TEntity, TValue&
&&&&&&&&& (
&&&&&&&&&&& this ObjectQuery&TEntity& query,
&&&&&&&&&&& Expression&Func&TEntity, TValue&& selector,
&&&&&&&&&&& params TValue[] collection
&&&&&&&&& )
&&&&&&&&&&& return WhereIn(query, selector, (IEnumerable&TValue&)collection);
调用方式如下:
&&&&&&& public IQueryable&T_Bas_PlanInfo& GetT_Bas_PlanInfoByCondition(List&string& conditions)
&&&&&&&&&&& var results = this.ObjectContext.T_Bas_PlanInfo
&&&&&&&&&&&&&&& .WhereIn(e =& e.plangeneral, conditions);
&&&&&&&&&&&
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:127424次
积分:2013
积分:2013
排名:第17746名
原创:71篇
评论:12条
(6)(1)(1)(4)(10)(4)(5)(2)(8)(4)(1)(11)(1)(5)(1)(1)(6)君,已阅读到文档的结尾了呢~~
豆丁精品文档: 搞笑动态图片 动态图片 动态壁纸 李毅吧很黄动态图 航班动态查询 动态头像 动态图 一级建造师报考条件 二级建造师报名条件 gif动态图片
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Linq_to_sql_实现多条件的动态查询
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口1188人阅读
有这样一个场景:应用程序可能会提供一个用户界面,用户可以使用该用户界面指定一个或多个谓词来筛选数据。这种情况在编译时不知道查询的细节,动态查询将十分有用。
在LINQ中,Lambda表达式是许多标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where、Select、Order By、Take While 以及其他方法)中定义的计算。表达式目录树用于针对数据源的结构化查询,这些数据源实现IQueryable&T&。例如,LINQ to SQL 提供程序实现 IQueryable&T&接口,用于查询关系数据存储。C#和Visual Basic编译器会针对此类数据源的查询编译为代码,该代码在运行时将生成一个表达式目录树。然后,查询提供程序可以遍历表达式目录树数据结构,并将其转换为适合于数据源的查询语言。
表达式目录树在LINQ中用于表示分配给类型为Expression&TDelegate&的变量的Lambda表达式。还可用于创建动态LINQ查询。
System.Linq.Expressions命名空间提供用于手动生成表达式目录树的API。Expression类包含创建特定类型的表达式目录树节点的静态工厂方法,例如,ParameterExpression(表示一个已命名的参数表达式)或 MethodCallExpression(表示一个方法调用)。编译器生成的表达式目录树的根始终在类型Expression&TDelegate&的节点中,其中TDelegate是包含至多五个输入参数的任何TDelegate委托;也就是说,其根节点是表示一个lambda表达式。
现在就上例子来解释:
SELECT查询:
&span style=&font-size:18&&//依据IQueryable数据源构造一个查询
IQueryable&Customer& custs = db.C
//组建一个表达式树来创建一个参数
ParameterExpression param =
Expression.Parameter(typeof(Customer), &c&);
//组建表达式树:c.ContactName
Expression selector = Expression.Property(param,
typeof(Customer).GetProperty(&ContactName&));
Expression pred = Expression.Lambda(selector, param);
//组建表达式树:Select(c=&c.ContactName)
Expression expr = Expression.Call(typeof(Queryable), &Select&,
new Type[] { typeof(Customer), typeof(string) },
Expression.Constant(custs), pred);
//使用表达式树来生成动态查询
IQueryable&string& query = db.Customers.AsQueryable()
.Provider.CreateQuery&string&(expr);
//使用GetCommand方法获取SQL语句
mon.DbCommand cmd = db.GetCommand(query);
Console.mandText);&/span&
WHERE查询:
&span style=&font-size:18&&IQueryable&Customer& custs = db.C
//创建一个参数c
ParameterExpression param =
Expression.Parameter(typeof(Customer), &c&);
//c.City==&London&
Expression left = Expression.Property(param,
typeof(Customer).GetProperty(&City&));
Expression right = Expression.Constant(&London&);
Expression filter = Expression.Equal(left, right);
Expression pred = Expression.Lambda(filter, param);
//Where(c=&c.City==&London&)
Expression expr = Expression.Call(typeof(Queryable), &Where&,
new Type[] { typeof(Customer) },
Expression.Constant(custs), pred);
//生成动态查询
IQueryable&Customer& query = db.Customers.AsQueryable()
.Provider.CreateQuery&Customer&(expr);&/span&
以上是博客园中例子。现在我们来解决动态查询。上面的例子主要是学习了表达式树的用法,但主要问题是我们每次
都将实体类传入并且识别是哪个属性值,就不是一个可复用的动态查询。下一篇分享个人粗陋的写法。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24497次
排名:千里之外
原创:15篇
转载:13篇
(1)(2)(2)(3)(3)(4)(1)(1)(1)(2)(1)(7)

我要回帖

更多关于 电脑老自动关机是什么原因 的文章

 

随机推荐