linq to sql中,如何解决多条件查询问题,答案,用表达式树!
本篇适合于规模较小的数据量,对于大数据量,需要用另外的方式,见下一篇
首先,从网上搜,是必不可少的,大概了解了一下linq 多条件组合查询的方向,就开始动手了,首先,写一个委托的方法:
代码如下:
private bool GetCondition(FeedBack fb)
{
bool boolResult = true;
int f_type = Int32.Parse(ddlFType.SelectedValue);
int isClose = Int32.Parse(ddlIsClose.SelectedValue);
int isTrue = Int32.Parse(ddlIsTrue.SelectedValue);
string keyword = tbxKeyword.Text.FilterInjectStr();
if (f_type != 0)
{
boolResult &= fb.F_Type == f_type;
}
if (isClose != -1)
{
boolResult &= fb.IsClose == isClose;
}
if (isTrue != -1)
{
boolResult &= fb.IsTrue == isTrue;
}
if (!keyword.IsNullOrEmpty())
{
boolResult &= fb.ContentInfo.IndexOf(keyword) > -1;
}
return boolResult;
}
这里因为是做测试,我就全部把方法放在当前页面中了.
注意,此方法中的内容,可以根据实际情况进行改变,我这里做的是一个留言板的列表;
调用的方式,我这里列表是是绑定repeater控件的.
于是可以这样:
代码如下:
private void ListDataBind()
{
Expression<Func<FeedBack,bool>> expr = n => GetCondition(n);
List<FeedBack> pageData = feedBacks.AllFeedBacks.Where(expr.Compile()).ToList();
FeedbackList.DataSource = pageData;
FeedbackList.DataBind();
}
注意,FeedBack是我的linq to sql的数据源表的对象名称.
另外,网站搜的一些答案有错误,例如会把我的Expression<Func<FeedBack,bool>>写成Expressionbool>>,NND,鄙视这些垃圾网站.还有写手.
希望各位初学者能从我的文章中获益!
相关推荐
-
SQL 多条件查询几种实现方法详细介绍
SQL 多条件查询 以后我们做多条件查询,一种是排列结合,另一种是动态拼接SQL 如:我们要有两个条件,一个日期@addDate,一个是@name 第一种写法是 if (@addDate is not null) and (@name <> '') select * from table where addDate = @addDate and name = @name else if (@addDate is not null) and (@name ='') select * from t
-
SqlServer使用 case when 解决多条件模糊查询问题
我们在进行项目开发中,经常会遇到多条件模糊查询的需求.对此,我们常见的解决方案有两种:一是在程序端拼接SQL字符串,根据是否选择了某个条件,构造相应的SQL字符串:二是在数据库的存储过程中使用动态的SQL语句.其本质也是拼接SQL字符串,不过是从程序端转移到数据库端而已. 这两种方式的缺点是显而易见的:一是当多个条件每个都可为空时,要使用多个if语句进行判断:二是拼接的SQL语句容易产生SQL注入漏洞. 最近写数据库存储过程的时候经常使用case when 语句,正好可以用这个语句解决一下以上问
-
sql 多条件组合查询,并根据指定类别找出所有最小子类别的SQL语句备忘
复制代码 代码如下: DECLARE @PAGESIZE INT DECLARE @PAGEINDEX INT DECLARE @PAGECOUNT INT DECLARE @RECORDCOUNT INT SELECT @PAGESIZE=5 SELECT @PAGEINDEX=1 DECLARE @FIELDNAME VARCHAR(50) DECLARE @FIELDVALUE VARCHAR(50) DECLARE @OPERATION VARCHAR(50) --组合条件 DECLAR
-
MySQL中使用case when 语句实现多条件查询的方法
举例如下: 数据表为DemoTable,字段有id, condition1,condition2,condition3,condition4,condition5 要求是查询DemoTable中,condition1,condition2,condition3,condition4,condition5五个字段中符合任意两个或两个以上的条件的内容. 可使用case when来实现这个条件,需要嵌套子查询语句 sql语句代码示例如下: 复制代码 代码如下: SELECT * FROM DemoTa
-
linq to sql 中,如何解决多条件查询问题,答案,用表达式树! (下)
如何从真正意义上做到延迟加载,即一次只从数据库中取我们需要的用到的那部分数据呢.通过研究,有了下面的方法: 首先,我们要新建一个静态类,用于存放多条件组合查询的各种组合,比如or,And这些等等.代码如下: 复制代码 代码如下: using System.Linq.Expressions; public static class PredicateExtensionses { public static Expression<Func<T, bool>> True<T>
-
SqlServer 巧妙解决多条件组合查询
开发中经常会遇得到需要多种条件组合查询的情况,比如有三个表,年级表Grade(GradeId,GradeName),班级Class(ClassId,ClassName,GradeId),学员表Student(StuId,StuName,ClassId),现要求可以按年级Id.班级Id.学生名,这三个条件可以任意组合查询学员信息. 做法不止一种,这里提供一种巧妙的使用一条查询来实现的办法,我们来写成一个过程,如下: 复制代码 代码如下: create proc up_select_student_
-
linq to sql中,如何解决多条件查询问题,答案,用表达式树!
本篇适合于规模较小的数据量,对于大数据量,需要用另外的方式,见下一篇 首先,从网上搜,是必不可少的,大概了解了一下linq 多条件组合查询的方向,就开始动手了,首先,写一个委托的方法: 复制代码 代码如下: private bool GetCondition(FeedBack fb) { bool boolResult = true; int f_type = Int32.Parse(ddlFType.SelectedValue); int isClose = Int32.Parse(ddlIs
-
mybatis中的count()按条件查询方式
目录 mybatis count()按条件查询 1.sql count()函数 2.mybatis中count()按条件查询 在查询时使用count(*),total为1,结果为0 mybatis count()按条件查询 1.sql count()函数 count()函数返回匹配指定条件的行数. sql count(column_name)语法: count(column_name)函数返回指定列的值的数目(null)不计入. select count(column_name) from ta
-
sqlserver和oracle中对datetime进行条件查询的一点区别小结
首先,看一下sql server,之前我们都通过前台用户选择一个起始时间和一个结束时间(以日为最小单位),然后来作为条件进行查询,如果直接通过"between starttime and endtime"来作为条件的话,发现会自动将"2009-06-17"转化为" 2009-06-17 00:00:00",于是如下查询条件" between '2009-06-16' and '2009-06-17'",只能得到16日的数据,1
-
Linq to SQL Delete时遇到问题的解决方法
1.1. Code1: using (PubsDataContext pubsContent = new PubsDataContext()) { pubsContent.Log = Console.Out; Author author = pubsContent.Authors.Single(a => a.au_id == "111-11-1111"); pubsContent.Authors.DeleteOnSubmit(author); pu
-
LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题
如果表中的字段类型为 char(1) 时,Linq to SQL生成char (System.Char)的属性,如下图 表定义 生成的实体 2. 如果要查询LineCode=='A'的记录,可以这样定义Linq查询语句 var test1 = from p in db.ProductLines where p.LineCode =='A' select p; 生成的SQL语句是这样的 SELECT [t0].[LineCode], [t0].[Li
-
C#操作LINQ to SQL组件进行数据库建模的基本教程
建立实体类 使用LINQ to SQL时,需要首先建立用于映射数据库对象的模型,也就是实体类.在运行时,LINQ to SQL 根据LINQ表达式或查询运算符生成SQL语句,发送到数据库进行操作.数据库返回后,LINQ to SQL负责将结果转换成实体类对象. 建立实体类的方法有很多,例如LINQ to SQL设计器,手动编码建立,使用XML文件映射,使用命令行工具SqlMetal生成等.其中最方便的就是LINQ to SQL设计器. 1.使用LINQ to SQL设计器建立实体类
-
SQL中一些小巧但常用的关键字小结
前言 前面的几篇文章中,我们大体上介绍了 SQL 中基本的创建.查询语句,甚至也学习了相对复杂的连接查询和子查询,这些基本功相信你也一定掌握的不错,那么本篇则着重介绍几个技巧方面的关键字,能够让你更快更有效率的写出一些 SQL. 下面话不多说了,来一起看看详细的介绍吧 起别名 在实际的项目中,有时候我们的表名.字段名过于复杂以致于我们的 SQL 写出来过长.过于复杂,这时候我们往往会通过起别名的方式将一些名字较长.较为复杂的字段或是表名简化. 我们可以使用别名(Alias)来对数据表或者列进行临
-
MybatisPlus分页查询与多条件查询介绍及查询过程中空值问题的解决
目录 前言 一.分页处理 1.调用方法传入参数获取返回值 2.设置分页拦截器 二.条件查询 2.1通过QueryWrapper对象来执行分页查询 2.2在QueryWrapper对象的基础上使用lambda表达式 2.3直接通过LambdaQueryWrapper对象 三.多条件查询 3.1且的情况 3.2或的情况 四.null判定 前言 MP这样一款强大的持久层框架处理起来复杂的SQL来也是得心应手,效率极高,快快与我一同领略Plus的独特魅力吧 一.分页处理 1.调用方法传入参数获取返回值
-
PhpMyAdmin中无法导入sql文件的解决办法
PhpMyAdmin中无法导入sql文件的解决办法 在命令窗口: mysql>source d:/datafilename.sql
随机推荐
- Flex4 DataGrid中如何嵌入RadioButton
- DOS 命令字典
- vue多种弹框的弹出形式的示例代码
- 诘屈聱牙之javascript中国象棋
- perl对长度不一文本的行列进行置换的实现代码
- JS实现闪动的title消息提醒效果
- php相对当前文件include其它文件的方法
- Java_异常类(错误和异常,两者的区别介绍)
- JavaScript实现三级联动菜单实例代码
- 探讨:如何在ScrollView中嵌套ListView
- HTML5 JS压缩图片并获取图片BASE64编码上传
- SQL Server数字开头的数据库表名的解决方法
- 使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
- Java大文件上传详解及实例代码
- asp.net 页面间传值方法小结
- Android中Java根据文件头获取文件类型的方法
- vue实现个人信息查看和密码修改功能
- Python Pandas 如何shuffle(打乱)数据
- 解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
- Python基于FTP模块实现ftp文件上传操作示例