zoukankan      html  css  js  c++  java
  • SqlMethods

    最近專案的關係,一直再想LINQ是否有提供T-SQL中的LIKE方法,於是找了一下MSDN,結果發現了SqlMethods類別。這類別確實好用,不過提供少是最大的遺憾。甚麼是SqlMethods呢!?它是一個對應SQL Server函式的方法,只有LINQ TO SQL才支援;換言之,就是LINQ TO SQL提供部分的SQL Server函式的方法。以下我們來介紹LIKE與DateDiffDay的用法:

    1.SqlMethods類別:LIKE
    01var 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
    01var 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 天内已发货的所有订单。

  • 相关阅读:
    NTP服务安装
    Teambition 的使用
    搭建svn服务器和测试
    通过NTP协议进行时间同步
    转利用OpenSSL库对Socket传输进行安全加密(RSA+AES)
    转源码编译安装MySQL5.6.12详细过程
    CentOS 6.4安装ffmpeg2.4.2 支持h.265
    转:CentOS 6.4 64-bit编译安装ffmpeg
    Work 2013 博客园挂博客
    FLASH和EEPROM的最大区别
  • 原文地址:https://www.cnblogs.com/zhangtao/p/2045557.html
Copyright © 2011-2022 走看看