应用背景:以货品为例,在基础数据中配置货品的判断规则,要根据这个规则筛选出符合条件的集合。

创建货品类

  1. public class Product
  2. {
  3. public string Name { get; set; }
  4. public string Code { get; set; }
  5. public string Unit { get; set; }
  6. }

主要实现方法

  1. public void GetProducts()
  2. {
  3. #region 创建List 实际应用从数据库中取值
  4. var products = new[] {
  5. new {Name = "货品1", Code = "001", Unit = "个"},
  6. new {Name = "货品2", Code = "002", Unit = "件"},
  7. new {Name = "货品3", Code = "003", Unit = "瓶"},
  8. new {Name = "货品4", Code = "004", Unit = "个"},
  9. new {Name = "货品1", Code = "005", Unit = "台"},
  10. };
  11. List<Product> lsProducts = new List<Product>();
  12. foreach (var q in products)
  13. {
  14. Product product = new Product();
  15. product.Name = q.Name;
  16. product.Code = q.Code;
  17. product.Unit = q.Unit;
  18. lsProducts.Add(product);
  19. }
  20. #endregion
  21. //获取到的判断规则 判断规则为Code和Unit 其中Name为固定条件
  22. string condition = "Code,Unit";
  23. string[] arrayCondition = condition.Split(',');
  24. //查询结果
  25. List<Product> result = lsProducts.Where(a => Filter(a, arrayCondition, "货品1", "005", "")).ToList(); //0条
  26. //只需判断Code 其中Name为固定条件
  27. string condition2 = "Code";
  28. arrayCondition = condition2.Split(',');
  29. result = lsProducts.Where(a => Filter(a, arrayCondition, "货品1", "005", "")).ToList();//1条
  30. //没有判断规则 其中Name为固定条件
  31. string condition3 = "";
  32. arrayCondition = condition3.Split(',');
  33. result = lsProducts.Where(a => Filter(a, arrayCondition, "货品1", "005", "")).ToList();//2条
  34. }
  35.  
  36. public bool Filter(Product product, string[] arrayCondition, string name, string code, string unti)
  37. {
  38. bool result = false;
  39. result = (product.Name == name)
  40. && (!arrayCondition.Contains("Code") ? true : product.Code == code)
  41. && (!arrayCondition.Contains("Unit") ? true : product.Unit == unti);
  42. return result;
  43. }

  

  

  

[C#] Linq 动态条件查询的更多相关文章

  1. 【Oracle】曾经的Oracle学习笔记(4-7)多表联合查询,子查询,动态条件查询

    一.多表联合查询 二.子查询 三.动态条件查询 LESSON 4 Displaying Data from Multiple Tables------------------------------- ...

  2. mybatis+maven+父子多模块进行crud以及动态条件查询

    使用IDEA创建maven项目,File→New→Project→maven→Next→填写GroupId(例:com.zyl)和ArtifactId(mybatis-demo-parent)→Nex ...

  3. Linq动态条件

    很多情况下,我们开发程序,需要动态拼接SQL查询语句; 比如  select top 1 * from User where age= 18  and  name = 'renruiquan' 其中红 ...

  4. linq 多条件查询

    Linq 进行多条件查询的时候使用PredicateBuilder帮助类可以很好的解决. 类的源码: public static class PredicateBuilder { /// <su ...

  5. Spring Data JPA,一种动态条件查询的写法

    我们在使用SpringData JPA框架时,进行条件查询,如果是固定条件的查询,我们可以使用符合框架规则的自定义方法以及@Query注解实现. 如果是查询条件是动态的,框架也提供了查询接口. Jpa ...

  6. Linq in条件查询

    Linq 实现sql中的not in和in条件查询   T-SQL的IN: Select ProductID, ProductName, CategoryID From dbo.Products Wh ...

  7. spring-data-jpa动态条件查询

    //获取动态条件的集合List<Long> list = new ArrayList<Long>(); Long sysUserId = currentUser.getSysU ...

  8. 用PredicateBuilder实现Linq动态拼接查询

    在使用Linq查询的时候,特别是如果你在使用Entiry Framwork,有时会遇到动态查询的情况(客户的查询条件是不固定的拼接查询).我们能想到的第一方案应该是拼接SQL,的确这样是可以达到我们的 ...

  9. SpringBoot中Example的动态条件查询

    一.无匹配器的情况: Person person = new Person(); person.setName("test"); Role role = new Role(); r ...

随机推荐

  1. linux查找nginx所在目录

    ps -ef |grep nginx

  2. myeclipse中Servlet出错

    在myeclipse中Servlet总是出错,执行的时候一直提示找不到出现404错误, 然后把代码拷贝到eclipse ee中就没有问题,一直不理解怎么回事. 然后发了好长时间试了好些方法,结果把my ...

  3. 【源代码剖析】tornado-memcached-sessions —— Tornado session 支持的实现(二)

    客官您最终回头了! 让我们本着探(zuo)索(si)精神把 session.py 看完吧... 首先看看须要的库: pickle 一个用于序列化反序列化的库(听不懂?你直接看成和 json 一样作用即 ...

  4. BZOJ 2338 HNOI2011 数矩形 计算几何

    题目大意:给定n个点,求一个最大的矩形,该矩形的四个顶点在给定的点上 找矩形的方法是记录全部线段 若两条线段长度相等且中点重合 这两条线段就能够成为矩形的对角线 于是我们找到全部n*(n-1)/2条线 ...

  5. 【洛谷2839/BZOJ2653】middle(主席树)

    题目: 洛谷2839 分析: 记\(s_i\)表示原序列中第\(i\)大的数. 考虑对于任意一个区间\([a,b]\),设它的中位数为\(s_m\),那么这个区间内大于等于\(s_m\)的数和小于\( ...

  6. 【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)

    题目: POJ1845 分析: 首先用线性筛把\(A\)分解质因数,得到: \[A=p_1^{a_1}*p_2^{a_2}...*p_n^{a_n} (p_i是质数且a_i>0) \] 则显然\ ...

  7. python爬虫值requests模块

    - 基于如下5点展开requests模块的学习 什么是requests模块 requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求.功能强大,用法简洁高效.在 ...

  8. 344 Reverse String 反转字符串

    请编写一个函数,其功能是将输入的字符串反转过来.示例:输入:s = "hello"返回:"olleh"详见:https://leetcode.com/probl ...

  9. MVC系列学习(十二)-服务端的验证

    在前一讲,提到过,客户端的东西永远可以造假,所以我们还要在服务端进行验证 注意:先加载表单,后添加js文件,才能有效:而先加载js,后添加表单,是没有效果的 1.视图与Model中的代码如下 2.一张 ...

  10. JdbcTemplate:Jdbc模板和数据库元数据

    通过 Jdbc .C3P0 .Druid 的使用我们会发现即使我们做了工具的封装,但重复性的代码依旧很多.我们可以通过 JdbcTemplate 即 Jdbc 模板来使我们的代码更加简洁,逻辑更加清晰 ...