zoukankan      html  css  js  c++  java
  • ADO.NET Entity Framework(5)esql (二)。

    esql函数 统计类

    Avg

      平均值

    myContext context = new myContext();
    string esql = "SELECT value AVG(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
    foreach (int n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    3
    */

    BigCount

      个数(long)

    myContext context = new myContext();
    string esql = "SELECT value BigCount(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<long> query = context.CreateQuery<long>(esql);
    foreach (long n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    15
    */

    Count

      个数(int)

    myContext context = new myContext();
    string esql = "SELECT value Count(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
    foreach (int n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    15
    */

    Max

      最大值

    myContext context = new myContext();
    string esql = "SELECT value Max(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
    foreach (int n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    6
    */

    Min

      最小值

    myContext context = new myContext();
    string esql = "SELECT value Min(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
    foreach (int n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    1
    */

    Sum

      合计

    myContext context = new myContext();
    string esql = "SELECT value Sum(it.ItemValue) FROM myContext.DBItemList as it";
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
    foreach (int n in query)
    {
    Console.WriteLine(n);
    }
      
    /* print:
    54
    */

      联合使用

    myContext context = new myContext();
    string esql = "SELECT Max(it.ItemValue) as Max , Min(it.ItemValue) as Min FROM myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("Max:{0},Min:{1}", r["Max"], r["Min"]);
    }
      
    /* print:
    Max:6,Min:1
    */

      与group by一起使用

    myContext context = new myContext();
    string esql = "SELECT ID as ItemID , Max(it.ItemValue) as Max , Min(it.ItemValue) as Min FROM myContext.DBItemList as it group by it.ItemID as ID";
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("ItemID:{0}, Max:{1},Min:{2}", r["ItemID"], r["Max"], r["Min"]);
    }
      
    /* print:
    ItemID:a, Max:6,Min:2
    ItemID:b, Max:5,Min:1
    ItemID:c, Max:6,Min:2
    */

      数学类

    Abs

      绝对值

    Abs(-2)
    Round

      随机数

    Round(748.58)

      日期

    CurrentDateTime()
    CurrentDateTimeOffset()
    CurrentUtcDateTime()
    Day( expression ) Day(cast('03/12/1998' as DateTime)) --返回:12
    GetTotalOffsetMinutes --返回:

      SQL Server 2008 only

    Hour ( expression ) Hour(cast('22:35:5' as DateTime)) --返回:22
    Minute( expression ) Minute(cast('22:35:5' as DateTime)) --返回:35
    Month (expression) Month(cast('03/12/1998' as DateTime)) --返回:3
    Second( expression ) Second(cast('22:35:5' as DateTime)) --返回:5
    Year( expression ) Year(cast('03/12/1998' as DateTime)) --返回:1998

      字符

    Concat ( string1, string2)

      字符串连接

    Concat('abc', 'xyz') --返回:abcxyz
    IndexOf( string1, string2)

      字符串位置查找

    IndexOf('xyz', 'abcxyz') --返回:4
    Length ( string )

      字符串长度

    Legth('abcxyz') --返回:6
    Reverse ( string )

      字符串反转

    Reverse('abcd') --返回:dcba
    ToLower( string )

      大写转小写

    ToLower('ABC') --返回:abc
    ToUpper( string )

      小写转大写

    ToUpper('abc') --返回:ABC
    Trim( string )

      去两端空格

    Trim(' abc ') --返回:abc
    LTrim( string )

      去左端空格

    LTrim(' abc') --返回:abc
    RTrim( string )

      去右端空格

    Left ( string, length)

      左端截取

    Left('abcxyz', 3) --返回:abc
    Right ( string, length)

      右端截取

    Right('abcxyz', 3) --返回:xyz
    Substring ( string, start, length)

      两端截取

    Substring('abcxyz', 4, 3) --返回:xyz

      esql语句 查询语句

      

      SELECT

    myContext context = new myContext();
      
    string esql = "SELECT it.ItemValue as a,it.NameID FROM [DBItemList] AS it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1}", r["a"], r["NameID"]);
    }

    SELECT
    1 AS [C1],
    [Extent1].[ItemValue] AS [ItemValue],
    [Extent1].[NameID] AS [NameID]
    FROM [dbo].[DBItemList] AS [Extent1]

      WHERE

    myContext context = new myContext();
      
    string esql = "SELECT VALUE it FROM [DBItemList] AS it WHERE (it.ItemValue=5 or it .ItemValue=5) and it.NameID='n01' ";
      
    ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
      
    foreach (DBItemList r in query)
    {
    Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
    }

    SELECT
    [Extent1].[AutoId] AS [AutoId],
    [Extent1].[NameID] AS [NameID],
    [Extent1].[ItemID] AS [ItemID],
    [Extent1].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent1]
    WHERE (([Extent1].[ItemValue] = 5) OR ([Extent1].[ItemValue] = 5)) AND ([Extent1].[NameID] = 'n01')

      GROUP BY

    myContext context = new myContext();
      
    string esql = "SELECT it.ItemID,Sum(it.ItemValue) as ValueSum FROM [DBItemList] AS it GROUP BY it.ItemID ";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1}", r["ItemID"], r["ValueSum"]);
    }

    SELECT
    1 AS [C1],
    [GroupBy1].[K1] AS [ItemID],
    [GroupBy1].[A1] AS [C2]
    FROM ( SELECT
      [Extent1].[ItemID] AS [K1],
      SUM([Extent1].[ItemValue]) AS [A1]
      FROM [dbo].[DBItemList] AS [Extent1]
      GROUP BY [Extent1].[ItemID]
    ) AS [GroupBy1]

      ORDER BY

    myContext context = new myContext();
      
    string esql = "SELECT VALUE it FROM [DBItemList] AS it ORDER BY it.ItemValue,it.ItemID desc ";
      
    ObjectQuery<DBItemList> query = context.CreateQuery<DBItemList>(esql);
      
    foreach (DBItemList r in query)
    {
    Console.WriteLine("{0},{1}", r.ItemID, r.ItemValue);
    }

    SELECT
    [Extent1].[AutoId] AS [AutoId],
    [Extent1].[NameID] AS [NameID],
    [Extent1].[ItemID] AS [ItemID],
    [Extent1].[ItemValue] AS [ItemValue]
    FROM [dbo].[DBItemList] AS [Extent1]
    ORDER BY [Extent1].[ItemValue] ASC, [Extent1].[ItemID] DESC

      HAVING

    myContext context = new myContext();
      
    string esql = "SELECT it.ItemID,Count(it.ItemValue) as ValueSum FROM DBItemList AS it GROUP BY it.ItemID HAVING SUM(it.ItemValue) > 5";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1}", r["ItemID"], r["ValueSum"]);
    }

    SELECT
    1 AS [C1],
    [GroupBy1].[K1] AS [ItemID],
    [GroupBy1].[A2] AS [C2]
    FROM ( SELECT
      [Extent1].[ItemID] AS [K1],
      SUM([Extent1].[ItemValue]) AS [A1],
      COUNT([Extent1].[ItemValue]) AS [A2]
      FROM [dbo].[DBItemList] AS [Extent1]
      GROUP BY [Extent1].[ItemID]
    ) AS [GroupBy1]
    WHERE [GroupBy1].[A1] > 5

    JOIN

    Cross Joins
    Inner Joins
    Left Outer Joins
    Right Outer Joins
    Full Outer Joins

      CASE语句

      CASE WHEN THEN ELSE END

    myContext context = new myContext();
      
    string esql = "select it.ItemID, it.ItemValue ,(Case when it.ItemValue =1 then '差' when it.ItemValue between 2 and 4 then '好' else '其他' end) as ItemValueRemarks from myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1},{2}", r["ItemID"], r["ItemValue"], r["ItemValueRemarks"]);
    }
    /*
    c,4,好
    c,5,其他
    c,2,好
    c,3,好
    b,5,其他
    c,6,其他
    b,2,好
    b,1,差
    c,3,好
    a,4,好
    a,5,其他
    a,2,好
    a,3,好
    a,6,其他
    a,3,好
    */

      esql 类型 简单类型

    ADO.NET Entity Framework(5)esql (二)

      

      Null

    is Null
    is not Null

    myContext context = new myContext();
      
    ObjectQuery<typeTest> query = context.typeTest.Where("it.b is not Null");
      
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      Boolean

    True,False

    myContext context = new myContext();
      
    ObjectQuery<typeTest> query = context.typeTest.Where("it.e==True");
      
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      Integer

      Float,Double

      Decimal

    123
    123.456
    23.34

    myContext context = new myContext();
      
    ObjectQuery<typeTest> query = context.typeTest.Where("it.c==123");
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      String

    "abcd"
    N"U字符"
    'abcd'

    myContext context = new myContext();
      
    // ObjectQuery<typeTest> query = context.typeTest.Where("it.b==N'冬冬'");
    ObjectQuery<typeTest> query = context.typeTest.Where("it.b=="冬冬" ");
    // ObjectQuery<typeTest> query = context.typeTest.Where("it.b=='冬冬'");
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      DateTime

    DATETIME'2007-11-11 22:22'
    DATETIME'2007-11-11 01:01:00.0000000'

    myContext context = new myContext();
      
    // ObjectQuery<typeTest> query = context.typeTest.Where("it.d==DATETIME'1977-11-11 00:00:00.000'");
    ObjectQuery<typeTest> query = context.typeTest.Where("it.d==cast('1977-11-11' as System.DateTime)");
      
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      Time

    TIME'22:11'
    TIME'01:02:03.1234567'

      DateTimeOffset

    DATETIMEOFFSET'2007-11-11 22:11 +02:00'
    DATETIMEOFFSET'2007-11-11 01:01:00.0000000 -02:00'

      Binary

    Binary'00ffaabb'
    X'ABCabc'
    BINARY '0f0f0f0F0F0F0F0F0F0F'
    X'' –空

      Guid

    Guid'0321AF86-0AA5-4a86-A086-1D789FA54AA3'
    GUID '0321AF86-0AA5-4a86-A086-1D789FA54AA3'

    myContext context = new myContext();
    ObjectQuery<typeTest> query = context.typeTest.Where("it.a==Guid'0321af86-0aa5-4a86-a086-1d789fa54aa3'");
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      REF

    myContext context = new myContext();
    //string esql = "SELECT it.ItemID FROM DBItem as it";
    string esql = "SELECT REF(it).ItemID FROM DBItem as it";
    ObjectQuery<DbDataRecord> v = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in v)
    {
    Console.WriteLine("{0}", r[0]);
    }

      ROW

    myContext context = new myContext();
      
    string esql = "select value row( it.ItemValue ,it.NameID,'wxd' as wxwinter) from myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1},{2}", r["ItemValue"], r["NameID"], r["wxwinter"]);
    }

      myContext context = new myContext();

    string esql = "select row( it.ItemValue ,it.NameID) as wxd ,it.ItemID from myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    DbDataRecord v = r["wxd"] as DbDataRecord;
    Console.WriteLine("{0},{1},{2}", r["ItemID"],v["ItemValue"],v["NameID"]);
    }

      集合

    MULTISET(1,2,3,4)
    {1,2,3,4}
    SELECT VALUE it FROM [DBItemList] AS it WHERE it.ItemValue IN {1,2,3}

      myContext context = new myContext();

    string esql = "{1,2,3} ";
      
    ObjectQuery<int> query = context.CreateQuery<int>(esql);
      
    foreach (int r in query)
    {
    System.Console.WriteLine(r);
    }
    SELECT
    [UnionAll2].[C1] AS [C1]
    FROM (SELECT
      [UnionAll1].[C1] AS [C1]
      FROM (SELECT
        1 AS [C1]
        FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]
      UNION ALL
        SELECT
        2 AS [C1]
        FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable2]) AS [UnionAll1]
      UNION ALL
        SELECT
        3 AS [C1]
        FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable3]) AS [UnionAll2]

      myContext context = new myContext();

    string esql = "{row(1 as a,'wxd' as wxwinter),row(2 as a,'lzm' as wxwinter),row(3 as a,'wxwinter' as wxwinter)} ";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    System.Console.WriteLine("{0},{1}",r["a"],r["wxwinter"]);
    }
    /*
    1,wxd
    2,lzm
    3,wxwinter
    */
    SELECT
    1 AS [C1],
    CASE WHEN ([UnionAll2].[C1] = 0) THEN 1 WHEN ([UnionAll2].[C1] = 1) THEN 2 ELSE 3 END AS [C2],
    CASE WHEN ([UnionAll2].[C1] = 0) THEN 'wxd' WHEN ([UnionAll2].[C1] = 1) THEN 'lzm' ELSE 'wxwinter' END AS [C3]
    FROM (SELECT
      [UnionAll1].[C1] AS [C1]
      FROM (SELECT
        0 AS [C1]
        FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]
      UNION ALL
        SELECT
        1 AS [C1]
        FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable2]) AS [UnionAll1]
    UNION ALL
      SELECT
      2 AS [C1]
      FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable3]) AS [UnionAll2]

      Object 返回对像

      Select 选出的值可以直接创建为对像后,将对像放入字段中返回

    myContext context = new myContext();
    string esql = "SELECT [WindowsFormsApplication8].[DBItemEx](it.ItemID + 'b') as myObject FROM DBItem as it";
    ObjectQuery<DbDataRecord> v = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in v)
    {
    DBItemEx obj = r["myObject"] as DBItemEx;
      
    Console.WriteLine("{0}", obj.ItemID);
      
    }

      CAST 类型转换

    myContext context = new myContext();
      
    string esql = "select value CAST(it.ItemValue as System.String) from myContext.DBItemList as it";
      
    ObjectQuery<string> query = context.CreateQuery<string>(esql);
      
    foreach (string r in query)
    {
    Console.WriteLine(r);
    }
    myContext context = new myContext();
      
    string esql = "using System;select value CAST(it.ItemValue as String) from myContext.DBItemList as it";
      
    ObjectQuery<string> query = context.CreateQuery<string>(esql);
      
    foreach (string r in query)
    {
    Console.WriteLine(r);
    }
    CAST( d as Edm.Decimal(16, 2) )

      OFTYPE

      OFTYPE ( expression, [ONLY] test_type )

    myContext context = new myContext();
    string esql = "OFTYPE(((SELECT VALUE it FROM DBItem as it) ),[WindowsFormsApplication8].[DBItemEx])";
    ObjectQuery<DBItemEx> v = context.CreateQuery<DBItemEx>(esql);

      与如下效果相同

    ADO.NET Entity Framework(5)esql (二)

    myContext context = new myContext();
    ObjectQuery<DBItemEx> v = context.DBItem.OfType<DBItemEx>();

      TREAT

    myContext context = new myContext();
    string esql = "SELECT TREAT(it AS [WindowsFormsApplication8].[DBItemEx]) FROM DBItem AS it";
    ObjectQuery<DbDataRecord> v = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in v)
    {
    DBItemEx obj = r[0] as DBItemEx;
    if (obj != null)
    {
    Console.WriteLine("{0}", obj.ItemID);
    }
    }

      与如下效果类似

    ADO.NET Entity Framework(5)esql (二)

    myContext context = new myContext();
    ObjectQuery<DBItemEx> v = context.DBItem.OfType<DBItemEx>();

      IS 类型判断

    myContext context = new myContext();
    string esql = "SELECT TREAT(it AS [WindowsFormsApplication8].[DBItemEx]) FROM DBItem AS it WHERE it IS OF ([WindowsFormsApplication8].[DBItemEx])";
    ObjectQuery<DbDataRecord> v = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in v)
    {
    DBItemEx obj = r[0] as DBItemEx;
    // if (obj != null)
    {
    Console.WriteLine("{0}", obj.ItemID);
    }
    }

      与如下效果类似

    ADO.NET Entity Framework(5)esql (二)

    myContext context = new myContext();
    ObjectQuery<DBItemEx> v = context.DBItem.OfType<DBItemEx>();

      esql Namespace 使用SqlServer函数

    using SqlServer;

    myContext context = new myContext();
    string esql = "using SqlServer;select it.ItemValue ,LEN(it.NameID) as NameIDLEN from myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1}",r["ItemValue"],r["NameIDLEN"]);
    }

    SqlServer.函数

    myContext context = new myContext();
    string esql = "select it.ItemValue ,SqlServer.LEN(it.NameID) as NameIDLEN from myContext.DBItemList as it";
      
    ObjectQuery<DbDataRecord> query = context.CreateQuery<DbDataRecord>(esql);
      
    foreach (DbDataRecord r in query)
    {
    Console.WriteLine("{0},{1}",r["ItemValue"],r["NameIDLEN"]);
    }

    SELECT
    1 AS [C1],
    [Extent1].[ItemValue] AS [ItemValue],
    LEN([Extent1].[NameID]) AS [C2]
    FROM [dbo].[DBItemList] AS [Extent1]

      使用NET的数据类型

    myContext context = new myContext();
      
    string esql = "using System;select value CAST(it.ItemValue as String) from myContext.DBItemList as it";
      
    ObjectQuery<string> query = context.CreateQuery<string>(esql);
      
    foreach (string r in query)
    {
    Console.WriteLine(r);
    }
    myContext context = new myContext();
      
    // ObjectQuery<typeTest> query = context.typeTest.Where("it.d==DATETIME'1977-11-11 00:00:00.000'");
    ObjectQuery<typeTest> query = context.typeTest.Where("it.d==cast('1977-11-11' as System.DateTime)");
      
    foreach (typeTest r in query)
    {
    Console.WriteLine("{0},{1},{2},{3},{4},{5}",r.a,r.b,r.c,r.d,r.e,r.值);
    }

      esql关系,导航 KEY

    myContext context = new myContext();
    string esql="SELECT VALUE [TargetEntity] FROM (SELECT VALUE x FROM [myContext].[FK_DBItemList_DBItem] AS x WHERE Key(x.[DBItem]) = ROW(@EntityKeyValue1 AS EntityKeyValue1)) AS [AssociationEntry] INNER JOIN [myContext].[DBItemList] AS [TargetEntity] ON Key([AssociationEntry].[DBItemList]) = Key(Ref([TargetEntity]))";
      
    ObjectQuery<DBItemList> dbitemlist = context.CreateQuery<DBItemList>(esql, new ObjectParameter("EntityKeyValue1", "a"));
      
    foreach (DBItemList r in dbitemlist)
    {
    Console.WriteLine("{0},{1},{2}", r.AutoId, r.ItemValue, r.NameID);
    }

      效果同下

    myContext context = new myContext();
      
    ObjectQuery<DBItemList> dbitemlist = context.DBItem.First(p => p.ItemID == "a").DBItemList.CreateSourceQuery();
      
    foreach (DBItemList r in dbitemlist)
    {
    Console.WriteLine("{0},{1},{2}", r.AutoId, r.ItemValue, r.NameID);
    }

  • 相关阅读:
    浏览器缓存机制
    vim 同时操作多行
    webpack打包性能优化
    测试 IE 浏览器兼容性 VirtualBox + modern.ie
    react-redux 学习笔记
    Redux 学习笔记
    Mac 下抓包工具 Charles 修改特定请求
    PyUsb的使用记录--window中
    Java 通过Jna调用dll路径问题
    OpenJdk14精简jdk运行javaFx样式丢失问题
  • 原文地址:https://www.cnblogs.com/liufei88866/p/1446424.html
Copyright © 2011-2022 走看看