zoukankan      html  css  js  c++  java
  • Linq 动态查询

    如果是传统的应用程序开发,采取动态拼 Sql字符串的形式就可以解决了,但Linq代码是没办法间歇性判断而拼接.
    首先UI上查询条件的项目往往并不确定,如上图目前有城市订单数目,将来可能有新的项目要增加,结果将导致代码频繁更改,对于这种情况无论是拼Sql时代,还是如今的Linq都不太容易应对,故而当有新的查询项目添进时,就多加一个查询条件。
    另一个问题,当城市输入框为空时,那么对城市条件的限定则不应当加入Linq语句。
    比如
    string city = "";
    Linq语句片段:where c.City.Contains(city);
    当city为空时,上述片段不应该成为在Linq语句的一部分,这该怎么办呢? 总不能在Linq代码中间写 if(city != "")吧?!
    真正的技巧很简单:
    string city = queryItems.City;
    int ordersCount = queryItems.OrdersCount;
    
    var query = from c in dbContext.Customers
                where (String.IsNullOrEmpty(city) ? true : c.City.Contains(city))
                   && (ordersCount == 0 ? true : c.Orders.Count > ordersCount)
                select c;
    string queryString = query.ToString();
    return query.ToList();

    显而易见,在where子句中可以使用三元运算符进行条件判断:

        当条件不符合时返回一个true值,Linq在翻译为Sql语句时将忽略true;

        而条件符合时将返回预期的表达式语句。

     
     
     
     
     
     
     
  • 相关阅读:
    获取从链接传来的id
    通过域名直接访问Tomcat项目解决方法
    线程与高并发
    阿里云部署javaWeb项目全过程
    前后端分离项目,支持跨域,session不丢失
    python函数
    装饰器
    迭代器和生成器
    C/C++ I/O处理
    C++虚函数
  • 原文地址:https://www.cnblogs.com/luoxiaonet/p/2482763.html
Copyright © 2011-2022 走看看