SqlMethods
2011-05-13 15:18 观海看云 阅读(935) 评论(0) 编辑 收藏 举报最近專案的關係,一直再想LINQ是否有提供T-SQL中的LIKE方法,於是找了一下MSDN,結果發現了SqlMethods類別。這類別確實好用,不過提供少是最大的遺憾。甚麼是SqlMethods呢!?它是一個對應SQL Server函式的方法,只有LINQ TO SQL才支援;換言之,就是LINQ TO SQL提供部分的SQL Server函式的方法。以下我們來介紹LIKE與DateDiffDay的用法:
1.SqlMethods類別:LIKE
SqlMethods.Like(o.ShipCountry, txtKeyWord.Text)就是SqlMethods類別中LIKE的用法,畢竟它就是用T-SQL的LIKE,所以可以提供LIKE能用的萬用字元。以下是測試結果:
2.SqlMethods類別:DateDiffDay
SqlMethods.DateDiffDay(o.OrderDate, o.ShippedDate) > Convert.ToInt32(txtKeyWord.Text)就是SqlMethods類別DateDiffDay,主要是計算出兩個日期間相差大於十天的訂單有哪些。以下是測試結果:
是不是有T-SQL的味道呢!?
SqlMethods類別所提供的函式不多,大多都是計算兩個日期的差及LIKE而已,有興趣的看倌可以到MSDN看看。
1.SqlMethods類別:LIKE
01 | var result = from o in db.Orders |
02 | join od in db.Order_Details on o.OrderID equals od.OrderID |
03 | where SqlMethods.Like(o.ShipCountry, txtKeyWord.Text) |
04 | select new newItem |
05 | { |
06 | OrderID = o.OrderID, |
07 | CustomerID = o.CustomerID, |
08 | ShipName = o.ShipName, |
09 | ShipCity = o.ShipCity, |
10 | ShipCountry = o.ShipCountry, |
11 | UnitPrice = od.UnitPrice, |
12 | Quantity = od.Quantity |
13 | }; |
SqlMethods.Like(o.ShipCountry, txtKeyWord.Text)就是SqlMethods類別中LIKE的用法,畢竟它就是用T-SQL的LIKE,所以可以提供LIKE能用的萬用字元。以下是測試結果:
2.SqlMethods類別:DateDiffDay
01 | var result = from o in db.Orders |
02 | join od in db.Order_Details on o.OrderID equals od.OrderID |
03 | where SqlMethods.DateDiffDay(o.OrderDate, o.ShippedDate) > Convert.ToInt32(txtKeyWord.Text) |
04 | select new newItem |
05 | { |
06 | OrderID = o.OrderID, |
07 | CustomerID = o.CustomerID, |
08 | ShipName = o.ShipName, |
09 | ShipCity = o.ShipCity, |
10 | ShipCountry = o.ShipCountry, |
11 | UnitPrice = od.UnitPrice, |
12 | Quantity = od.Quantity |
13 | }; |
SqlMethods.DateDiffDay(o.OrderDate, o.ShippedDate) > Convert.ToInt32(txtKeyWord.Text)就是SqlMethods類別DateDiffDay,主要是計算出兩個日期間相差大於十天的訂單有哪些。以下是測試結果:
是不是有T-SQL的味道呢!?
SqlMethods類別所提供的函式不多,大多都是計算兩個日期的差及LIKE而已,有興趣的看倌可以到MSDN看看。
在LINQ to SQL语句中,为我们提供了SqlMethods操作,进一步为我们提供了方便,例如Like方法用于自定义通配表达式,Equals用于相比较是否相等。
Like
自定义的通配表达式。%表示零长度或任意长度的字符串;_表示一个字符;[]表示在某范围区间的一个字符;[^]表示不在某范围区间的一个字符。比如查询消费者ID以“C”开头的消费者。
var q = from c in db.Customers
where SqlMethods.Like(c.CustomerID, "C%")
select c;
比如查询消费者ID没有“AXOXT”形式的消费者:
var q = from c in db.Customers
where !SqlMethods.Like(c.CustomerID, "A_O_T")
select c;
DateDiffDay
说明:在两个变量之间比较。分别有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear
var q = from o in db.Orders
where SqlMethods
.DateDiffDay(o.OrderDate, o.ShippedDate) < 10
select o;
语句描述:查询在创建订单后的 10 天内已发货的所有订单。
作者:观海看云(个人开发历程知识库 - 博客园)
出处:http://www.cnblogs.com/zhangtao/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/zhangtao/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。