LinQ之崩溃的动态like
来源:互联网 发布:手机象棋软件 编辑:程序博客网 时间:2024/05/21 13:58
好久才更新一篇新的东西 这次项目做的很崩溃 LinQ从来没用过
简单的查询没有什么问题 关键是不能将SQL定义成字符串进行拼凑
问题来了
有6个条件 若其中一个不为空则作为条件 每个条件之间Or的关系
在网上查到有用LINQ开发团队提供的“动态查询库(Dynamic Query Library)”
但这需要引入文件 工程不是自己的 说的不算啊
只有别的办法了
具体实现
先进行表的查询
var query = from tableT in table
where
(条件)
select new XXBE()
{
m_Table = tableT
};
有多少需要组合的就定义多少
Expression<Func<XXBE, bool>> lambdaTrue = r => true;
Expression<Func<XXBE, bool>> lambda1;
Expression<Func<XXBE, bool>> lambda2;
.
.
.
if (!CheckUtil.isEmpty(strCondition1))
{
lambda1 = r => r.tableT.Name1.Contains(strCondition1);
var invokedExpr = Expression.Invoke(lambdaTrue, lambda1 .Parameters.Cast<Expression>());
lambdaTrue = Expression.Lambda<Func<XXBE, bool>>(Expression.And(lambda1 .Body, invokedExpr ),
lambda1 .Parameters);
isHaveFlag = true;
}
if (!CheckUtil.isEmpty(strCondition2))
{
lambda2 = r => r.YoyakuKihonInfo.RSVI_RSVERF.Contains(strCondition2);
var invokedExpr = Expression.Invoke(lambdaTrue, lambda2 .Parameters.Cast<Expression>());
if (isHaveFlag)
{
lambdaTrue = Expression.Lambda<Func<XXBE, bool>>(Expression.Or(lambda2 .Body, invokedExpr),
lambda2 .Parameters);
}
else
{
lambdaTrue = Expression.Lambda<Func<XXBE, bool>>(Expression.And(lambda2 .Body, invokedExpr),
lambda2 .Parameters);
}
isHaveFlag = true;
}
.
.
.
最后检索
query = query.Where(lambdaTrue);
实在是被逼无奈啊 如果6个条件组合判断得有多少种场合啊 还得往BE里扔数据 貌似Dynamic也用不了
要是有什么别的好办法 一定要告诉我啊
- LinQ之崩溃的动态like
- linq之like操作
- linq之like操作
- Linq Like
- Linq Like
- linq like ,linq 模糊查询
- LINQ补遗之LIKE及NEWID()最终解决方案
- linq Like 模糊查询
- LINQ IN LIKE
- LINQ To SQL中in和like的用法
- MyBatis的动态sql的like拼接
- Linq To SQL动态查询 之 IQueryBuilder
- Linq动态查询之Expressions扩展PredicateExtensions
- Linq之动态排序(字符传入)
- Linq to DataTable之动态分组
- LINQ to SQL语句之动态查询
- Dynamic LINQ - 动态LINQ
- Linq动态传递数据库中某张表的列
- 网站,学习软件编程常去
- API入门系列之四 -相当简单的SDK程序
- Eclipse插件开发之Facet开发笔记
- 偶尔写写算法
- 系统程序员成长计划-序
- LinQ之崩溃的动态like
- MCUS.SettingOutData
- 源码安装后设置成系统默认的软件
- 论在瀑布式开发模型中使用项目管理方式的不合理
- IT与命运,人生随想
- Acegi框架介绍
- 定点化资料
- 系统程序员成长计划-背景知识
- 系统程序员成长计划-走近专业程序员(上)