.netLinq动态Where条件
文章介绍全网最佳方式使用EF+Linq实现多条件组合查询;代码中没有使用到网上主流自定义Expression表达式而是采用linq原生态功能编写示例直观、易懂,且有效解决自定义Expression不支持EF问题。
一、EF+Linq代码片段示例如下(注意只是片段,如果对EF熟悉可轻松理解,model变量为数据模型,MainContext 继承DbContext) :
说明:用IQueryable<tbDevice> table可以初始化null,也可以用var table=XXXX方式,具体视代码结构
IQueryable<tbDevice> table = null;
using (MainContext db = new MainContext())
{
//默认查询所有
table = from t in db.Device
select t;
//下面是多条件组合查询
if (model.Id > 0)
{
table = from t in table
where t.id == model.Id
select t;
}
if (model.GroupId > 0)
{
table = from t in table
where t.groupId == model.GroupId
select t;
}
if (!string.IsNullOrEmpty(model.Name))
{
table = from t in table
where t.name.Contains(model.Name)
select t;
}
if (!string.IsNullOrEmpty(model.SerialNo))
{
table = from t in table
where t.serialNo.Contains(model.SerialNo)
select t;
}
//排序
table = from t in table
orderby t.id descending
select t;
//此处才开始执行查询数据库并返回列表
result.data = table.ToList();
}
string _UserID = string.Empty;
_UserID = "E351D301-F64B-412C-B9EF-573F41235AF2";
string _UserName = string.Empty;
_UserName = "admin";
string _employyName = string.Empty;
_employyName = "测试1";
using (var xj = new XJGasBottles_testDataContext())
{
//Linq写法
var usersLinq = from us in xj.Users
where (string.IsNullOrEmpty(_UserID) || us.UserID.ToString() == _UserID)
&& (string.IsNullOrEmpty(_UserName) || us.UserName == _UserName)
|| (us.EmpName == _employyName)
//where string.IsNullOrEmpty(_UserID) || us.UserID.ToString()==_UserID
//where string.IsNullOrEmpty(_UserName) || us.UserName==_UserName
select us;
foreach (var item in usersLinq)
{
Console.WriteLine("Linq:");
Console.WriteLine(item.UserID + "_" + item.UserName);
}
//Lamda写法
var usersLamda = xj.Users.Where(s => (string.IsNullOrEmpty(_UserID) || s.UserID.ToString() == _UserID) &&
(string.IsNullOrEmpty(_UserName) || s.UserName == _UserName) ||
(s.EmpName==_employyName)
)
.Select(s => s);
foreach (var item in usersLamda)
{
Console.WriteLine("Lamda:");
Console.WriteLine(item.UserID + "_" + item.UserName);
}
}
.netLinq动态Where条件的更多相关文章
- EntityFramework动态多条件查询与Lambda表达式树
在常规的信息系统中, 我们有需要动态多条件查询的情况, 例如UI上有多个选择项可供用户选择多条件查询数据. 那么在.net平台Entity Framework下, 我们用Lambd ...
- ibatis动态查询条件
ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...
- Silverlight学习(四) domainservice动态多条件查询
上次讲了silverlight+MVVN+EF的简单框架,能够实现简单的数据CURD,但是多条件动态的查询一直没有实现.在网上查阅了很多资料,发现自己走了很多误区,代码很难调试正确. 这次的查询是基于 ...
- Mysql动态多条件查询
动态多条件查询是一类经常遇到的问题. 在Mysql里面可以用语句简单的解决. SELECT * FROM product WHERE price = IF('{0}' = '', price, '{0 ...
- 浅析Entity Framework Core2.0的日志记录与动态查询条件
前言 Entity Framework Core 2.0更新也已经有一段时间了,园子里也有不少的文章.. 本文主要是浅析一下Entity Framework Core2.0的日志记录与动态查询条件 去 ...
- 在SharePoint列表中使用动态筛选条件[今日][Today]
如果在SharePoint使用了日历控件或者其他列表中有时间字段,用户经常希望能够动态使用条件字段进行筛选,例如希望筛选出开始日期是今天的事件.未来三日的事件. SharePoint的列表筛选条件支持 ...
- mybatis动态拼接条件的技巧 where 1=1 或者where标签
/** * 根据输入的学生信息进行条件检索 * 1. 当只输入用户名时, 使用用户名进行模糊检索: * 2. 当只输入邮箱时, 使用性别进行完全匹配 * 3. 当用户名 ...
- ibatis动态多条件查询及模糊查询(oracle,mysql,sql)
首先是模糊查询的问题,开始时我使用如下条件:select * from user where name like '%#value#%'. 可是怎么也不行,好像还报错了.后来在网上找到了解决方法,就是 ...
- oracle 条件:1=1或1=0,动态添加条件
看到where语句中有条件:where 1=1 和 1=2或1<>1 用途: 1=1:是为了添加条件时使用and并列其他条件时使用的(动态连接后续条件) 比如: ...
随机推荐
- zookeeper 启动显示started,jps查看进程却没有,解决方法
如图所示, 输入 zkServer.sh start 显示如下: Starting zookeeper ... STARTED 可是输入jps指令 却找不到zookeeper进程 去zkdata文件目 ...
- elasticsearch 聚合函数 max double精度损失bug
测试样例数据{ "size" : 0, "query" : { "bool" : { "must" : { " ...
- 用DDE控制Word
DDE(Dynamic Data Exchange),称为动态数据交换.用于进程间的通讯,看看他如何来和Word交互. 在System页签下有TDdeClientConv组件,拖一个放到界面上,然后我 ...
- Mysql 性能优化5【重要】数据库结构优化
数据库设计的步骤 我们大多使用mysql 设计三范式 设置时区
- SQL Server CONVERT() 日期转换为新数据类型的 通用函数
http://www.w3school.com.cn/sql/func_convert.asp
- Python单元测试框架之pytest 2 -- 生成测试报告
From: https://www.cnblogs.com/fnng/p/4768239.html Python单元测试框架之pytest -- 生成测试报告 2015-08-29 00:40 by ...
- ALGO-10_蓝桥杯_算法训练_集合运算(排序)
问题描述 给出两个整数集合A.B,求出他们的交集.并集以及B在A中的余集. 输入格式 第一行为一个整数n,表示集合A中的元素个数. 第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素. 第三行 ...
- What is SolrCloud? (And how does it compare to master-slave?)
What is SolrCloud? (And how does it compare to master-slave?) SolrCloud is a set of new features and ...
- is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface | mongodb在windows和Linux导出出错
执行mongoexport命令的时候 mongoexport --csv -f externalSeqNum,paymentId --host 127.0.0.1:27017 -d liveX -c ...
- servlet简单的小例子
去我云盘下载: https://pan.baidu.com/s/1E2yoZ2Nmk2FE2XjuPOCvjA 访问方式:http://localhost:8080/testServlet/index ...