zoukankan      html  css  js  c++  java
  • LINQ基础——WHERE子句

    LINQ基础——WHERE子句

    一、简介

    将一个布尔条件("谓词")应用于每个源元素(由范围变量引用),并返回满足指定条件的元素。
    适用场景:实现过滤,查询等功能。
    说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。
    Where操作包括3种形式,分别为:简单形式、关系条件形式、First()形式。

    二、案例

    简单形式

    使用where筛选在伦敦的客户:

    var q =
        from c in db.Customers
        where c.City == "London"
        select c;

    筛选2000年或之后雇用的雇员:

    var q =
        from e in db.Employees
        where e.HireDate >= new DateTime(2000, 1, 1)
        select e;

    关系条件形式

    筛选库存量在订货点水平之下但未断货的产品:

    var q =
        from p in db.Products
        where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
        select p;

    筛选出UnitPrice 大于10 或已停产的产品:

    var q =
        from p in db.Products
        where p.UnitPrice > 10m || p.Discontinued
        select p;

    下面这个例子是调用两次where以筛选出UnitPrice大于10且已停产的产品:

    var q =
        db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);

    First()形式

    返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)。

    简单用法

    选择表中的第一个发货方。

    Shipper shipper = db.Shippers.First();

    元素:

    选择CustomerID 为“BONAP”的单个客户

    Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");

    条件:

    选择运费大于 100.00 的订单:

    Order ord = db.Orders.First(o => o.Freight > 100.00M);

    WHERE的其他案例

    将数组中小于5的偶数查询出来输出到控制台

    //数据源
    int[] arr = { 0, 3, 2, 1, 9, 6, 8, 7, 4, 5 };
    
    //使用Where子句查询的查询语句
    var query = from a in arr
                where a < 5 && a % 2 == 0
                select a;
    
    //执行查询
    foreach (var a in query)
    {
        Console.WriteLine(a);
    }

    分析:

    首先遍历数组中的每个元素,然后用where语句筛选出小于5,并且对2去模是0的数查询出来返回。
    where子句不仅能使用表达式来进行筛选,还可以使用方法进行筛选。

    public static bool IsEven(int a)
    {
        return a % 2 == 0 ? true : false;
    }
    //数据源
    int[] arr = { 0, 3, 2, 1, 9, 6, 8, 7, 4, 5 };
    
    //where子句也可以接受一个方法
    var query = from a in arr
                where IsEven(a)
                select a;
    
    foreach (var a in query)
    {
        Console.Write(a + ",");
    }

    这就是一个在where语句中使用方法进行筛选的例子,输出的结果和上例完全一样。

    三、总结

    使用where子句还要注意以下几点:
    1.一个查询表达式可以包含多个where子句
    2.where子句是一种筛选机制。除了不能是第一个或最后一个子句外,它几乎可以放在查询表达式中的任何位置。where子句可以出现在group子句的前面或后面,具体情况取决于是3.必须在对源元素进行分组之前还是分组之后来筛选源元素。
    4.如果指定的谓词对于数据源中的元素无效,则会发生编译时错误。这是Linq提供的强类型检查的一个优点。
    5.编译时,where关键字会被转换为对where标准查询运算符方法的调用。


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    Linux:文件解压与压缩
    Linux:环境变量
    Linux:Vim
    Linux:目录&文件基本操作
    Linux:文件权限
    Linux:用户&用户组操作
    Linux:Shell 常用通配符
    Linux:常用shell快捷键
    Linux:Linux 重要人物
    架构:层次化
  • 原文地址:https://www.cnblogs.com/wml-it/p/14836646.html
Copyright © 2011-2022 走看看