技术开发 频道

LINQ体验(11)——LINQ to SQL语句之Null语义和String/DateTime方法


【IT168技术文档】

  在本系列中,主要介绍LINQ to SQL基础的东西,在上一篇中,听取了老赵的意见,为了避免初学者对于LINQ与LINQ to SQL这两个概念的误解,将本系列命名为LINQ体验系列之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<T>. HasValue查询雇员,其结果与第一个例子相同。在第三个例子中,使用Nullable<T>.Value来返回 ReportsToEmployee不为null的雇员的ReportsTo的值。
1.Null var q = from e in db.Employees where e.ReportsToEmployee == null select e; 2.Nullable<T>.HasValue var q = from e in db.Employees where !e.ReportsTo.HasValue select e; 3.Nullable<T>.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 }; 这个例子使用了+操作符重新组合了顾客的区域。 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(" ")}; 这个实例说明ContactName第一个匹配项的索引有一个空格的顾客。 下面两个实例说明ContactName以"Maria"开头,以"Anders"结尾的顾客。接下来的方法看看例子很快就明白了。 5.String.StartsWith(prefix) var q = from c in db.Customers where c.ContactName.StartsWith("Maria") select c; 6.String.EndsWith(suffix) var q = from c in db.Customers where c.ContactName.EndsWith("Anders") select c; 7.String.Substring(start) var q = from p in db.Products select p.ProductName.Substring(3); 8.String.Substring(start, length) var q = from e in db.Employees where e.HomePhone.Substring(6, 3) == "555" select e; 9.String.ToUpper() var q = from e in db.Employees select new {LastName = e.LastName.ToUpper(), e.FirstName}; 10.String.ToLower() var q = from c in db.Categories select c.CategoryName.ToLower(); 11.String.Trim() var q = from e in db.Employees select e.HomePhone.Substring(0, 5).Trim(); 12.String.Insert(pos, str) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Insert(5, ":"); 13.String.Remove(start) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Remove(9); 14.String.Remove(start, length) var q = from e in db.Employees where e.HomePhone.Substring(4, 1) == ")" select e.HomePhone.Remove(0, 6); 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") };
0
相关文章