EntityFramework linq 多条件查询,不定条件查询

时间:2023-02-27 07:55:32

一、场景描述:

开发的时候,有些查询功能,往往查询的条件是不确定的,用户没有填的不参与到查询中去。

如图1所示,用户可能只要给根据名称来查询即可,有时候开始时间和结束时间并不需要填写。

EntityFramework linq 多条件查询,不定条件查询

图 1

二、解决方案

如图2所示,传统的解决方案往往是判断下用户输入了什么字段,然后写n个 if else 来判断

EntityFramework linq 多条件查询,不定条件查询

图 2

而本文利用三目运算符,减少了代码量,给出了优雅的实现方式:

        public List<Entity.Order> Search(OrderQuery orderQuery)
{ IQueryable<Entity.Order> orderList = shopDB.Orders.Where(p =>
p.Status == orderQuery.OrderStatus
&& p.CreatedTime > orderQuery.CreatedStartTime
&& p.CreatedTime < orderQuery.CreatedEndTime
&& string.IsNullOrEmpty(orderQuery.ShopId) ? true : p.ShopId == orderQuery.ShopId)
&& string.IsNullOrEmpty(orderQuery.Name) ? true : p.Name == orderQuery.Name;
return orderList.ToList();
}

如代码所示,条件写法为:

&& string.IsNullOrEmpty(orderQuery.Name) ? true : p.Name == orderQuery.Name

如果传入参数orderQuery.Name为空的话,直接为ture,跳过此条件。

三、写在最后

如果大家有其他好的解决方案,欢迎交流!

EntityFramework linq 多条件查询,不定条件查询的更多相关文章

  1. Linq实现字符串拼接多条件查询

    Linq实现字符串拼接多条件查询 开发过程中,为提升用户体验,经常会使用到多条件查询,本篇博客介绍如何使用Linq实现字符串拼接多条件查询 一般SQL字符串拼接 1 string sql = &quo ...

  2. Linq to sql 实现多条件的动态查询&lpar;方法一&rpar;

    /// <summary> /// Linq to sql 多字段动态查询 /// </summary> /// <returns></returns> ...

  3. Asp&period;net Core C&num;进行筛选、过滤、使用PredicateBuilder进行动态拼接lamdba表达式树并用作条件精准查询,模糊查询

    在asp.net core.asp.net 中做where条件过滤筛选的时候写的长而繁琐不利于维护,用PredicateBuilder进行筛选.过滤.LInq配合Ef.core进行动态拼接lamdba ...

  4. MySQL数据库6 -查询基础,简单查询,条件查询&comma;对查询结果排序

    一.SELECT语句 SELECT COL1,COL2,....COLn FROM TABLE1,TABLE2,....TABLEn [WHERE CONDITIONS] -- 查询条件 [GROUP ...

  5. 自定义 Azure Table storage 查询过滤条件

    本文是在Azure Table storage 基本用法一文的基础上,介绍如何自定义 Azure Table storage 的查询过滤条件.如果您还不太清楚 Azure Table storage ...

  6. 在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可

    在查询时将查询条件放入Session中,导出时直接根据qpniRGaFiler取查询条件即可

  7. 如何在django的filter中传递字符串变量作为查询条件(动态改变查询条件)

    一般来说在需要查询数据的时候都是以下形式 ret=Articles.objects.filter(id=1) 然而如果要动态的改变查询的条件怎么办呢? 如下代码 def getModelResult( ...

  8. &lbrack;转&rsqb;NHibernate之旅&lpar;4&rpar;:探索查询之条件查询&lpar;Criteria Query&rpar;

    本节内容 NHibernate中的查询方法 条件查询(Criteria Query) 1.创建ICriteria实例 2.结果集限制 3.结果集排序 4.一些说明 根据示例查询(Query By Ex ...

  9. Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装

    Spring NamedParameterJdbcTemplate命名参数查询条件封装, NamedParameterJdbcTemplate查询封装 >>>>>> ...

随机推荐

  1. ASP&period;NET Core MVC&sol;WebAPi 模型绑定探索

    前言 相信一直关注我的园友都知道,我写的博文都没有特别枯燥理论性的东西,主要是当每开启一门新的技术之旅时,刚开始就直接去看底层实现原理,第一会感觉索然无味,第二也不明白到底为何要这样做,所以只有当你用 ...

  2. 附录D 安装ZooKeeper

    D.1    安装ZooKeeper D.1.1   下载ZooKeeper ZooKeeper是Apache基金会的一个开源.分布式应用程序协调服务,是Google的Chubby一个开源的实现.它是 ...

  3. &lpar;转&rpar;iOS开发中邮箱,电话号码,身份证,密码,昵称正则表达式验证

    之前看到觉得不错 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...

  4. Lua C&plus;&plus; Binding之Lunar&comma; Luna

    服务端引擎的脚本, 我们项目在老端游项目上发展, 采取的是Lua脚本. 当前服务端的发展趋势是瘦引擎, 胖脚本模式, 基本上引擎负责的功能非常少, 主要是网络, 定帧, 定时器, 引擎通过导出相应的接 ...

  5. 说说无耻的商河水木清华开发商2013&quot&semi;交房

    说说无耻的水木清华开发商2013"交房" 我买的是22号楼,合同里写的是2011年6月30号前交房.4月28我手机响了,电话那边说是水木清华的,29号交房.说交房通知书已经EMS发 ...

  6. 移动前端中viewport&lpar;视口&rpar; 转

    移动前端中常说的 viewport (视口)就是浏览器显示页面内容的屏幕区域.其中涉及几个重要概念是 dpi ( device-independent pixel 设备逻辑像素 )和 CSS 像素之间 ...

  7. 一个基于和围绕Docker生态环境构建的早期项目列表

    https://blog.docker.com/2013/07/docker-projects-from-the-docker-community/

  8. 解决Ubuntu下vbox的&lpar;rc&equals;-1908&rpar;

    在Ubuntu下用虚拟机VBOX的时候总是遇到 Kernel driver not installed (rc=-1908) The VirtualBox Linux kernel driver (v ...

  9. &lbrack;ActionScript 3&period;0&rsqb; AS3 3D双圆环贴图

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.MovieCl ...

  10. SqlServer之代码块相关

    原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/sqlserver-codeblock/ 一.go语句 ...