zoukankan      html  css  js  c++  java
  • LINQ查询

    LINQ是Microsoft推出的新一代数据查询语言。
    LINQ作用:可以将数据查询直接集成到编程语言本身中。可以解决处理非常大的数据集合的问题。
    LINQ还提供了许多扩展方法,更便于排序、组合和计算查询结果的统计数据。
    使用LINQ可以查询C#中许多不同的数据源,包括对象、SQLXML、实体数据
    语法:
    string[] names =
    {
    "Alonso", "zheng", "Smith", "Jones", "Smythe", "Small", "Ruiz", "Hsieh", "Jorgenson",
    "Ilyich", "Singh", "Samba", "Fatimah"
    };
    var queryResults = from n in names
                       where n.StartsWith("S")
                       select n;
    foreach (var item in queryResults)
    {
    Console.WriteLine(item);
    }
    Console.ReadKey();
    }
    from是指定数据源。n相当于foreach后面的变量。where表示查询条件,可省略。
    select字句指定结果集中包含哪些元素。
    查询语法是在LINQ中编写查询的首选方式,但是方法语法同样需要了解。
     
    string[] names =
    {
    "Alonso", "zheng", "Smith", "Jones", "Smythe", "Small", "Ruiz", "Hsieh", "Jorgenson",
    "Ilyich", "Singh", "Samba", "Fatimah"
    };
    var queryResults = names.Where(n => n.StartsWith("s")); //以s开头
    foreach (var item in queryResults)
    {
    Console.WriteLine(item);
    }
    Console.ReadKey();
    }
    排序查询结果
    用where找到了需要的数据后,LINQ还可以方便地对得到的数据执行进一步处理。
    只需在语句中加上
    orderby n
    就能根据首字母进行升序排序。如需进行降序排序
    orderby n descending
    当然,也可以按照任意表达式进行排序,而不必重新编写查询。
    例:按照名字中最后一个字母来排序。
    orderby n.Substring(n.Length - 1);
    用方法语法排序同样很简单
    names.orderby(n => n);
    LINQ还提供了聚合运算符,对结果集进行操作。
    Count()//计数 
    Min(),
    Max(),
    Average()
    Sum();
    投影:在查询中创建新对象
    投影是在LINQ中从其他数据类型中创建新数据类型的技术术语。在select中,可以选择某个对象的字段,而不是整个对象。
    例如:select c.City.
    但是,与SQL不同,LINQ不允许在select子句中有多个字段。例如select c.City,c.Country这样是不允许的。
    这时,可以创建一个对象,像这样
    select new{c.City,c.Country,c.Sales}
     
    单值选择查询
    跟sql中一样,去除重复值。
    var queryResults = customers.Select(c => c.Region).Distinct(); 
    Any() 和 All() 方法。
     
    我们常常需要的另一类查询是确定数据是否满足某个条件,或者确保所有数据都满足条件。
     
    bool anyUSA = customers.Any(c => c.Country == "USA");
    Any是确定数据中是否有数据满足条件。all是确定数据中是否全部满足条件。
    当然,有时候我们会需要返回实际的数据,而并不是true和false。那么可以用
    First()和FirstOrDefault()方法。用于返回匹配的第一个数据,
    FirstOrDefault()即是为空也不会抛出异常。
    queryResults.FirstOrDefault(c => c.Regin == "re");
     
    多级排序:
    有时候按一个字段来进行排序是满足不了需求的。这时候可以用到多级排序。
    var queryResults = from c in customers
                       orderby c.Region,c.COuntry,c.City
                       select new {c.ID,c.Region}
    在方法语法中:
    var queryResults = customers.OrderBy(c => c.Region)
                      .ThenBy(c => c.Country)
                      .ThenBy(c => c.City)
                      .select(c => new{c.ID,c.Region,c.Country})
     
    Take() 和Skip() 方法
    Take相当于sql中的top。返回前几名的数据。Skip()与Take相反。
    返回剩余的数据。
    可以这样写:
    foreach(var item in queryResults.Take(5)){ }
    Join 查询 可以用一个查询搜索两个列表中相关的数据,用键字段把结果连接起来。
    var queryResults = from c in customers
    join o in orders on c.ID equals o.ID
    select new{c.ID,c.City,}
     
    LINQ to XML
    1.LINQ to XML函数构造方式
    XDocument xdoc = new XDocument(
    new XElement("customers",
    new XElement("customers",
    new XAttribute("ID", "A"),
    new XAttribute("City", "New York"),
    new XAttribute("Region", "North America"),
    new XElement("order",
    new XAttribute("Item", "Tire")
    )
    ),
    new XElement("customer")
    )
    );
    还可以通过字符串的方式创建
    XDocument xdoc = XDocument.Parse(@"<customers>.....</customers>")
  • 相关阅读:
    配置Tomcat 输入ip直接访问自己的页面
    为什么hashMap的容量是2的幂次
    LinkedList源码详解
    以太网和Zigbee的家居信息采集系统
    无线LED智能照明控制系统
    ZigBee无线应变采集装置
    ZigBee红外远程监控系统设计
    ZigBee教室照明监控系统设计
    基于物联网的智能医护系统研究
    物联网的低成本乳品质量链追溯平台设计
  • 原文地址:https://www.cnblogs.com/sjyzz/p/7793333.html
Copyright © 2011-2022 走看看