首页 [中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime方法

[中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime方法

举报
开通vip

[中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime方法[中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime方法 在本系列中,主要介绍LINQ to SQL基础的东西,因为LINQ太强大了,它对我们平常使用不同的数据源有着不同的内容,其包括对于SQL Server 数据库的LINQ to SQL;对于XML 文档的LINQ to XML;对于 ADO.NET 数据集的LINQ to DataSet;对于.NET 集合、文件、字符串等的LINQ to Objects。例外也出现了一些对LINQ支持的开源项目,例如LI...

[中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime方法
[中学教育]LINQ体验(11)——LINQ to SQL语句之Null语义和StringDateTime 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 在本系列中,主要介绍LINQ to SQL基础的东西,因为LINQ太强大了,它对我们平常使用不同的数据源有着不同的内容,其包括对于SQL Server 数据库的LINQ to SQL;对于XML 文档的LINQ to XML;对于 ADO.NET 数据集的LINQ to DataSet;对于.NET 集合、文件、字符串等的LINQ to Objects。例外也出现了一些对LINQ支持的开源项目,例如LINQ to JSON,LINQ for NHibernate等等。在这个系列中,一些关于LINQ to SQL基础的东西就这么多了,这一篇用一些例子说明一下Null语义和String/DateTime方法。 Null语义 说明:下面第一个例子说明查询ReportsToEmployee为null的雇员。第二个例子使用 Nullable.HasValue查询雇员,其结果与第一个例子相同。在第三个例子中,使用 Nullable.Value来返回ReportsToEmployee不为null的雇员的ReportsTo的值。 1.Null 查找不隶属于另一个雇员的所有雇员: var q = from e in db.Employees where e.ReportsToEmployee == null select e; 2.Nullable.HasValue 查找不隶属于另一个雇员的所有雇员: var q = from e in db.Employees where !e.ReportsTo.HasValue select e; 3.Nullable.Value 返回前者的EmployeeID 编号。请注意.Value 为可选: var q = from e in db.Employees where e.ReportsTo.HasValue select new { e.FirstName, e.LastName, ReportsTo = e.ReportsTo.Value }; 字符串/日期函数(String/Date Functions) LINQ to SQL支持以下String方法。但是不同的是默认情况下System.String 方法区分大小写。而SQL则不区分大小写。 1.字符串串联(String Concatenation) var q = from c in db.Customers select new { c.CustomerID, Location = c.City + ", " + c.Country }; 语句描述:这个例子使用+运算符在形成经计算得出的客户Location值过程中将字符串字段和字符串串联在一起。 2.String.Length var q = from p in db.Products where p.ProductName.Length < 10 select p; 语句描述:这个例子使用Length属性查找名称短于10个字符的所有产品。 3.String.Contains(substring) var q = from c in db.Customers where c.ContactName.Contains("Anders") select c; 语句描述:这个例子使用Contains方法查找所有其联系人姓名中包含“Anders”的客户。 4.String.IndexOf(substring) var q = from c in db.Customers select new { c.ContactName, SpacePos = c.ContactName.IndexOf(" ") }; 语句描述:这个例子使用IndexOf方法查找每个客户联系人姓名中出现第一个空格的位置。 5.String.StartsWith(prefix) var q = from c in db.Customers where c.ContactName.StartsWith("Maria") select c; 语句描述:这个例子使用StartsWith方法查找联系人姓名以“Maria”开头的客户。 6.String.EndsWith(suffix) var q = from c in db.Customers where c.ContactName.EndsWith("Anders") select c; 语句描述:这个例子使用EndsWith方法查找联系人姓名以“Anders”结尾的客户。 7.String.Substring(start) var q = from p in db.Products select p.ProductName.Substring(3); 语句描述:这个例子使用Substring方法返回产品名称中从第四个字母开始的部分。 8.String.Substring(start, length) var q = from e in db.Employees where e.HomePhone.Substring(6, 3) == "555" select e; 语句描述:这个例子使用Substring方法查找家庭电话号码第七位到第九位是“555”的雇员。 9.String.ToUpper() var q = from e in db.Employees select new { LastName = e.LastName.ToUpper(), e.FirstName }; 语句描述:这个例子使用ToUpper方法返回姓氏已转换为大写的雇员姓名。 10.String.ToLower() var q = from c in db.Categories select c.CategoryName.ToLower(); 语句描述:这个例子使用ToLower方法返回已转换为小写的类别名称。 11.String.Trim() var q = from e in db.Employees select e.HomePhone.Substring(0, 5).Trim(); 语句描述:这个例子使用Trim方法返回雇员家庭电话号码的前五位,并移除前导和尾随空格。 12.String.Insert(pos, str) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Insert(5, ":"); 语句描述:这个例子使用Insert方法返回第五位为 ) 的雇员电话号码的序列,并在 ) 后面插入一个 :。 13.String.Remove(start) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Remove(9); 语句描述:这个例子使用Remove方法返回第五位为 ) 的雇员电话号码的序列,并移除从第十个字符开始的所有字符。 14.String.Remove(start, length) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Remove(0, 6); 语句描述:这个例子使用Remove方法返回第五位为 ) 的雇员电话号码的序列,并移除前六个字符。 15.String.Replace(find, replace) var q = from s in db.Suppliers select new { s.CompanyName, Country = s.Country .Replace("UK", "United Kingdom") .Replace("USA", "United States of America") }; 语句描述:这个例子使用 Replace 方法返回 Country 字段中UK 被替换为 United Kingdom 以及USA 被替换为 United States of America 的供应商信息。 日期函数 LINQ to SQL支持以下DateTime方法。但是,SQL Server和CLR的DateTime类型在范围和计时周期精度上不同,如下表。 类型 最小值 最大值 计时周期 0001 年 1 月 9999 年 12 月 100 毫微秒(0.0000001 System.DateTime 1 日 31 日 秒) 1753 年 1 月 9999 年 12 月 3.33„ 毫秒(0.0033333 T-SQL DateTime 1 日 31 日 秒) T-SQL 1900 年 1 月 2079 年 6 月 6 1 分钟(60 秒) SmallDateTime 1 日 日 CLR DateTime 类型与SQL Server类型相比,前者范围更大、精度更高。因此来自SQL Server的数据用CLR类型表示时,绝不会损失量值或精度。但如果反过来的话,则范围可能会减小,精度可能会降低;SQL Server日期不存在TimeZone概念,而在CLR中支持这个功能。 我们在LINQ to SQL查询使用以当地时间、UTC 或固定时间要自己执行转换。 下面用三个实例说明一下。 16.DateTime.Year var q = from o in db.Orders where o.OrderDate.Value.Year == 1997 select o; 语句描述:这个例子使用DateTime 的Year 属性查找1997 年下的订单。 17.DateTime.Month var q = from o in db.Orders where o.OrderDate.Value.Month == 12 select o; 语句描述:这个例子使用DateTime的Month属性查找十二月下的订单。 18.DateTime.Day var q = from o in db.Orders where o.OrderDate.Value.Day == 31 select o; 语句描述:这个例子使用DateTime的Day属性查找某月 31 日下的订单。
本文档为【[中学教育]LINQ体验&#40;11&#41;——LINQ to SQL语句之Null语义和StringDateTime方法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_614050
暂无简介~
格式:doc
大小:22KB
软件:Word
页数:0
分类:
上传时间:2018-04-30
浏览量:12