EntityFramework linq 多条件查询,不定条件查询
2013-12-10 22:38
393 查看
一、场景描述:
开发的时候,有些查询功能,往往查询的条件是不确定的,用户没有填的不参与到查询中去。
如图1所示,用户可能只要给根据名称来查询即可,有时候开始时间和结束时间并不需要填写。
图 1
二、解决方案
如图2所示,传统的解决方案往往是判断下用户输入了什么字段,然后写n个 if else 来判断
图 2
而本文利用三目运算符,减少了代码量,给出了优雅的实现方式:
如代码所示,条件写法为:
&& string.IsNullOrEmpty(orderQuery.Name) ? true : p.Name == orderQuery.Name
如果传入参数orderQuery.Name为空的话,直接为ture,跳过此条件。
三、写在最后
如果大家有其他好的解决方案,欢迎交流!
开发的时候,有些查询功能,往往查询的条件是不确定的,用户没有填的不参与到查询中去。
如图1所示,用户可能只要给根据名称来查询即可,有时候开始时间和结束时间并不需要填写。
图 1
二、解决方案
如图2所示,传统的解决方案往往是判断下用户输入了什么字段,然后写n个 if else 来判断
图 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.Extended 实现Linq 动态查询和动态条件
- mvc entity framework 多条件 查询
- Linq To Entity 查询条件扩展
- mvc entity framework 多条件 查询
- [新手入门]快速学习 ADO.NET Entity Framework系列文章 #3 -- LINQ-to-SQL、EntitySQL、查询产生器方法(Query builder)三种语法
- EntityFramework Linq 按年月统计查询
- 【整理】Linq to Entity 动态拼接查询条件(重点是OR)
- Linq to Entity 动态拼接查询条件(重点是OR)
- Entity Framework Linq 动态组合where条件
- Entity Framework 的多条件组合查询和 LIKE 查询(Combination search and simulate LIKE search with Entity Framework)
- Entity framework lambda/ linq like 模糊查询
- Linq To Entity 查询条件扩展
- Entity Framework(LINQ to Entities)使用日期判断条件Truncate日期函数
- EntityFramework Linq查询
- 揭开Entity Framework LINQ查询的一点面纱
- Entity Framework 的多条件组合查询和 LIKE 查询(Combination search and simulate LIKE search with Entity Framework
- Entity Framework Extended Library (EF扩展类库,支持批量更新、删除、合并多个查询等)
- Linq 条件查询的一些方法
- Linq动态条件查询
- ASP.NET Entity Framework 查询数据表多个"s"的解决方法。