linq to sql的多条件动态查询
更新时间:2024-01-01 15:10:01 阅读量: 教育文库 文档下载
- 林青霞推荐度:
- 相关推荐
linq to sql的多条件动态查询确实是一件头痛的事情,用表达式树或反射方法要写一大堆代码,有时候想想与其这么复杂,还不如回到手动sql拼接的年代,但是技术总是向前发展的,终归还是要在linq上解决这一问题,无意在网上发现一个还算比较简单的办法,分享一下: void ShowData() {
using (DBDataContext db = new DBDataContext(Database.ConnectionString)) {
Expression
var _query = db.T_Bargins.Where
foreach (var item in _query) {
Response.Write(item.F_Name + \ + item.F_Money.ToString() + \); } } }
//得到合同金额大于6000,或合同名称中包含\江华\字的条件 private bool GetCondition(T_Bargin _Table) {
bool _result = false;
decimal _MinMoney = 6000;
if (_MinMoney > 0) {
_result |= _Table.F_Money >= _MinMoney;
}
string _Name = \江华\;
if (!String.IsNullOrEmpty(_Name)) {
_result |= _Table.F_Name.Contains(_Name); }
return _result; }
借助老外写的一个扩展表达式的类,可以把上篇中的代码写得更优雅 这是PredicateBuilder的源文件
public static class PredicateBuilder {
public static Expression
public static Expression
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast
{ return f => true; } { return f => false; }
return Expression.Lambda
(Expression.Or (expr1.Body, invokedExpr), expr1.Parameters); }
public static Expression
var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast
(Expression.And (expr1.Body, invokedExpr), expr1.Parameters); } }
下面是使用示例 :
List
DBDataContext db = new DBDataContext(Database.ConnectionString); IQueryable
string temp = keyword;
query = query.Where(p => p.Description.Contains(keyword)); }
//翻译后的sql语句:
//SELECT [t0].[ID], [t0].[Name], [t0].[Description] //FROM [dbo].[Product] AS [t0]
//WHERE ([t0].[Description] LIKE '%手机%') AND ([t0].[Description] LIKE 'a11%')
return query.ToList(); }
List
DBDataContext db = new DBDataContext(Database.ConnectionString); var predicate = PredicateBuilder.False
string temp = keyword;
predicate = predicate.Or(p => p.Description.Contains(temp)); }
var query = db.Products.Where(predicate); //翻译后的sql语句:
//SELECT [t0].[ID], [t0].[Name], [t0].[Description] //FROM [dbo].[Product] AS [t0]
//WHERE ([t0].[Description] LIKE 'a11%') OR ([t0].[Description] LIKE '#50%') return query.ToList(); }
void ShowData() {
//var _products = GetProductsByOR(\ //Repeater1.DataSource = _products; //Repeater1.DataBind();
var predicate = PredicateBuilder.True
string _name = \;
if (!string.IsNullOrEmpty(_name)) {
predicate = predicate.And(p => p.Name.Contains(_name)); }
string _description = \长虹\;
if (!string.IsNullOrEmpty(_description)) {
predicate = predicate.And(p => p.Description.Contains(_description)); }
using (DBDataContext db = new DBDataContext(Database.ConnectionString)) {
var _Products = db.Products.Where(predicate); Repeater1.DataSource = _Products; Repeater1.DataBind(); } }
正在阅读:
linq to sql的多条件动态查询01-01
货币长周期的逻辑04-01
地中海贫血的研究进展08-06
Steps towards an integrated data analysis Basic concepts and Bayesian analysis of Thomson s06-08
HEDGING的交际功能09-21
雪花02-13
高层建筑给排水消防设计的关键技术探究12-29
幼儿教师2022年个人工作总结范文03-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 条件
- 动态
- 查询
- linq
- sql
- 高考模拟试卷福建省2018届高三年毕业班第一次联合考试语文试题含答案解析
- 滩煤矿井下五图一表管理规定(试行稿)
- 我被陶行知“爱”与“德”改变的教育生活
- 1、计算机软件系统一般分为( A)两大部分
- 三年级数学下册第一单元教案
- “小手拉大手-清洁家园”活动实施方案(修改)
- 浅谈城市地下供水管网档案系统的建立和管理
- 2019-2020学年高二历史北师大版必修三备课资料:第18课 西方启蒙思想家的人文主义思想 - 图文
- 基础知识必做题A
- 《正比例的意义》听课体会
- 服务礼仪动作规范要求讲解
- 积极推进公司律师建设 提升银行法律工作水平
- 水泥企业化验室作业指导书
- 这几道家常肉菜你要是还不会的话,那你就该失恋了 - 图文
- 美满婚姻的八颗棋子
- 字符串试题
- 人教版新课标二年级数学上册教案全册
- 2018-2024年中国铜矿行业市场专项调研报告(目录) - 图文
- 汤文言建模社团教案
- (必考试题)2019届中考语文 第一部分 积累与运用 第7讲 文学文化常识复习习题