• 主攻ASP.NET.3.5.MVC架构之重生: LINQ(六)


    LINQ to SQL

    LINQ to SQL执行标准数据库命令

    *查询并创建Id&Title匿名类型

    LINQ to SQL Code

    MydataDataContext data = new MydataDataContext();

                var query = data.Article.Select(m => new { Id = m.ArticleID, Title = m.ArticleTitle });

    SqlCode

    SELECT [t0].[ArticleID] AS [Id], [t0].[ArticleTitle] AS [Title]

    FROM [dbo].[Article] AS [t0]

     

     

    *查询特殊数据行数

    Where()方法之前调用Select()方法,先使用Where()过滤数据

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.Article

                    .Where(m=>m.CategoryID==30&&m.ArticleID>20)

                    .Select(m => new { Id = m.ArticleID,Cid=m.CategoryID, Title = m.ArticleTitle });

    SqlCode

    SELECT [t0].[ArticleID] AS [Id], [t0].[CategoryID] AS [Cid], [t0].[ArticleTitle] AS [Title]

    FROM [dbo].[Article] AS [t0]

    WHERE ([t0].[CategoryID] = 30) AND ([t0].[ArticleID] > 20)

     

    *查询特殊数据行数

    Where()方法之前调用Select()方法,先使用Where()过滤数据

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.Article

                    .Where(m=>m.CategoryID==30&&m.ArticleID>20)

                    .Select(m => new { Id = m.ArticleID,Cid=m.CategoryID, Title = m.ArticleTitle });

    SqlCode

    SELECT [t0].[ArticleID] AS [Id], [t0].[CategoryID] AS [Cid], [t0].[ArticleTitle] AS [Title]

    FROM [dbo].[Article] AS [t0]

    WHERE ([t0].[CategoryID] = 30) AND ([t0].[ArticleID] > 20)

     

     

    *查询按创建发布时间排序,并按照[Sort]字段排序

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.Article.OrderBy(m => m.CreateTime).ThenBy(m => m.Sort);

    SqlCode

    SELECT [t0].[ArticleID], [t0].[CategoryID], [t0].[ArticleTitle], [t0].[ArticleBody], [t0].[IsTop], [t0].[Sort], [t0].[CreateTime], [t0].[SysUserID], [t0].[State]

    FROM [dbo].[Article] AS [t0]

    ORDER BY [t0].[CreateTime], [t0].[Sort]

     

    *查询按创建发布时间倒序,并按照[IsTop]字段排序

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.Article.OrderBy(m => m.IsTop).ThenByDescending(m => m.CreateTime); SqlCode

    SELECT [t0].[ArticleID], [t0].[CategoryID], [t0].[ArticleTitle], [t0].[ArticleBody], [t0].[IsTop], [t0].[Sort], [t0].[CreateTime], [t0].[SysUserID], [t0].[State]

    FROM [dbo].[Article] AS [t0]

    ORDER BY [t0].[IsTop], [t0].[CreateTime] DESC

     

    *查询单独一行

    LINQ to SQL Code

               var query = data.Article.Single(m => m.ArticleID == 54);

    返回单独一行实例

     

     

     

     

     

     

     

     

     

     

     

     

    *查询返回字母a开头的数据。(LINK Select

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.Article.Where(m => m.ArticleTitle.StartsWith("a"));

    using System.Data.Linq.SqlClient;

                MydataDataContext data = new MydataDataContext();

                var query = data.Article.Where(m => SqlMethods.Like(m.ArticleTitle,"a%"));

    SqlCode

    SELECT [t0].[ArticleID], [t0].[CategoryID], [t0].[ArticleTitle], [t0].[ArticleBody], [t0].[IsTop], [t0].[Sort], [t0].[CreateTime], [t0].[SysUserID], [t0].[State]

    FROM [dbo].[Article] AS [t0]

    WHERE [t0].[ArticleTitle] LIKE 'a%'

     

     

    *连接不同表,内连接(INNER JOIN

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                var query = data.AD

                            .Join(data.AdClass,c=>c.ClassID,m=>m.ClassID,(c,m)=>new {c.ID,c.ClassID,m.ClassName});

    SqlCode

    SELECT [t0].[ID], [t0].[ClassID], [t1].[ClassName]

    FROM [dbo].[AD] AS [t0]

    INNER JOIN [dbo].[AdClass] AS [t1] ON [t0].[ClassID] = ([t1].[ClassID])

     

     

     

    *连接不同表,外连接(OUTER JOIN

    LINQ to SQL Code

                var query = from c in data.AD

                            join m in data.AdClass

                            on c.ClassID equals m.ClassID into cm

                            from m in cm.DefaultIfEmpty()

                            select new { c.ID, c.ClassID, m.ClassName };

    SqlCode

     

    SELECT [t0].[ID], [t0].[ClassID], [t1].[ClassName] AS [ClassName]

    FROM [dbo].[AD] AS [t0]

    LEFT OUTER JOIN [dbo].[AdClass] AS [t1] ON [t0].[ClassID] = ([t1].[ClassID])

     

     

     

    *LINQ tp SQL 插入数据(Insert Data

    1.使用InsertOnSubmit()方法将实体Add到存在表中

    2.调用DataContextSubmitChanges()

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                SysUser su = new SysUser();

                su.Logname = "testLoginName";

                su.Password = "123456";

                su.State = 1;

                su.CreateTime = DateTime.Now;

                data.SysUser.InsertOnSubmit(su);

                data.SubmitChanges();

                int userid = su.SysUserID;

     

    *LINQ tp SQL 更新修改数据(UpDate Data)

    1.修改实体属性

    2.调用DataContextSubmitChanges()

    3.对实体和底层数据更新修改

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                SysUser su = data.SysUser.Single(m => m.SysUserID == 13);

                su.Logname = "updateUserName";

                su.Password = "654321";

                data.SubmitChanges();

     

     

     

     

     

     

     

    *LINQ tp SQL 删除数据(Delete Data)

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                SysUser suDelete = data.SysUser.Single(m => m.SysUserID == 13);

                data.SysUser.DeleteOnSubmit(suDelete);

                data.SubmitChanges();

     

     

    *动态查询

    执行动态SQL语句

    LINQ to SQL Code

                MydataDataContext data = new MydataDataContext();

                //data.ExecuteCommand("INSERT INTO [SysUser]([Logname],[Password],[State],[CreateTime])VALUES(@p0,@p1)");

                var query=data.ExecuteQuery(typeof(SysUser),"Select * from sysuser WHERE sysuserid=@p0",new object[]{2});

     

     

    *LINQ to SQL 查询日志

    1<%@ Page Trace="true"%> => Trace="true"

    2调用方法//context.Log = new TraceWrite();

    TraceWrite.cs

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Text;

    using System.IO;

    using System.Globalization;

    namespace AllFor.Helpers

    {

        public class TraceWrite:TextWriter

        {

            public override void Write(string value)

            {

                HttpContext.Current.Trace.Warn(value);

            }

            public override void Write(char[] buffer,int index,int count)

            {

                HttpContext.Current.Trace.Warn("LINQ",new string(buffer,index,count));

            }

            public override Encoding Encoding

            {

                get { return Encoding.Unicode; }

            }

            public TraceWrite():base(CultureInfo.CurrentCulture)

            {

            }

        }

    }

     

  • 相关阅读:
    Dapr Actor 的微服务架构
    社区 正式发布了跨平台的 CoreWCF 0.1.0 GA
    使用 Tye 辅助开发 dotnet 应用程序
    Dapr 交通流量控制示例
    Dapr是如何简化微服务的开发和部署
    牛年 dotnet云原生技术趋势
    Dapr 已在塔架就位 将发射新一代微服务
    Raden Blazor 组件以MIT 开源
    ASP Net Core – CORS 预检请求
    如何在 Blazor WebAssembly中 使用 功能开关
  • 原文地址:https://www.cnblogs.com/cube/p/2524122.html
Copyright © 2020-2023  润新知