栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

.net linq 日期查询

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

.net linq 日期查询

时间挺快,转眼10月间,最近都一直挺忙,无太多时间来更新,今天带来在工作中用到C#的linq一些高级查询表达式,会慢慢从浅薄更新到高级操作。

【1】概述

LINQ的全称是Language Integrated Query,中文译成“语言集成查询”。LINQ作为一种查询技术,首先要解决数据源的封装,大致使用了三大组件来实现这个封装,分别是LINQ to Object、LINQ to ADO.NET、LINQ to XML,我们主要讲解LINQ to Object,其它的可以参考官网。

Linq的数据源要求必须实现IEnumerable或IEnumerable接口,创建一个LINQ表达式必须要以from子句开头。

第一个姿势: 单个from

     //            //linq 查询由3基本部分组成如下    //            //            //1.数据源            List data = new List() { 1, 5, 18, 17, 13, 9, 8, 14, 15 };       //2.创建查询          var query = from n in data                                       where n > 8                                         select n;         //3.执行       foreach (var n in query)     {                Console.WriteLine(n);       }

在上面的LINQ表达式的from子句中,n叫做范围变量,data 是数据源,n的作用域存在于当前的LINQ表达式,表达式以外不能访问这个变量。where用来筛选元素,select用于输出元素。这里的范围变量n,和foreach语句中的隐式变量n都可以由编译器推断出其类型。

对象的使用:

public class Emp        {       public string Name { get; set; }         public int Age { get; set; }           public string Tel { get; set; }        }       static void Main(string[] args)        {              //对象的使用                  List Emps = new List {               new Emp{ Name="Mcally", Age=26, Tel ="1330708****"},                          new Emp{ Name="Jack", Age=17, Tel ="1592842****"},                        new Emp{ Name="King", Age=23, Tel ="1380524****"}                                    };                //查询年龄大于20的员工              var query = from emp in Emps                                      where emp.Age > 20                                          select emp;            foreach (Emp e in query)            {                   Console.WriteLine("姓名:{0} 年龄:{1} 电话:{2}", e.Name, e.Age, e.Tel);                  }

第二个姿势:复合form

public class Emp        {         public string Name { get; set; }            public int Age { get; set; }            public List TelTable { get; set; }        }        static void Main(string[] args)        {            List emps = new List {                                           new Emp{ Name="Tom", Age=35, TelTable=new List{"1330708****","1330709****"}},                                           new Emp{ Name="Ben", Age=17, TelTable=new List{"1592842****","1592843****"}},                                           new Emp{ Name="Lin", Age=23, TelTable=new List{"1380524****","1380525****"}}                                           };            //查询包含电话号码1592842****的员工            var query = from Emp ci in emps                        from tel in ci.TelTable                        where tel.IndexOf("1592842****") > -1                        select ci;            foreach (var ci in query)            {                Console.WriteLine("姓名:{0} 年龄:{1}", ci.Name, ci.Age);                foreach (var tel in ci.TelTable)                {                    Console.WriteLine("电话:{0}", tel);                }            }

第三姿势:多个form

 static void Main(string[] args)        {                  List eone = new List {                         new Emp{ Name="Ping", Age=35, Tel ="1330708****"},                                              new Emp{ Name="Jing", Age=17, Tel ="1592842****"},                                                new Emp{ Name="Ling", Age=23, Tel ="1380524****"}                                                   };                       List etwo = new List {                                                new Emp{ Name="Hing", Age=10, Tel ="1330708****"},                                                   new Emp{ Name="Qonn", Age=35, Tel ="1592842****"},                                                  new Emp{ Name="Huuu", Age=23, Tel ="1380524****"}                                     };           //在eone中查找Age大于20的客户,       //在etwo中查找Age小于30的客户                    var query = from e in eone                                where e.Age > 20                                  from e2 in etwo                                    where e2.Age < 30                                select new { e, e2 };            foreach (var ci in query)            {                    Console.WriteLine("{0} {1}", ci.e.Name, ci.e2.Name);              }

在select语句中,我们用了匿名类型来存储筛选出的元素,这样得到的完全是一个交叉联接表,有点类似于SQL中的笛卡尔乘积。

下次再继续更新,一点点介绍,当然还有更为简单的方式待后续更新。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/910394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号