zoukankan      html  css  js  c++  java
  • EntityFramwork 查询

    EntityFramwork 查询

    1、简单查询:

    SQL

    SELECT * FROM [Clients] WHERE Type=1 AND Deleted=0 ORDER BY ID

    EF

    //Func形式

    var clients = ctx.Clients.Where(c => c.Type == 1 && c.Deleted == 0)

                .OrderBy(c => c.ID)

                .ToList();

     

    //Linq形式

    var clients = from c in ctx.Clients

                  where c.Type == 1 && c.Deleted==0

                  orderby c.ID

                  select c;

     

    2、查询部分字段:

    SQL

    SELECT ID,Name FROM [Clients] WHERE Status=1

    EF

    //Func形式

    var clients = ctx.Clients.Where(c => c.Status == 1)

                .Select(c => new { c.ID, Name = c.ComputerName })

                .ToList();

     

    //Linq形式

    var clients = from c in ctx.Clients

                  where c.Status == 1

                  select new { c.ID, Name = c.ComputerName };

     

    3、查询单一记录:

    SQL

    SELECT * FROM [Clients] WHERE ID=100

    EF

    //Func形式

    var client = ctx.Clients.FirstOrDefault(c => c.ID == 100);

     

    //Linq形式

    var client = (from c in ctx.Clients

                where c.ID = 100

                select c).FirstOrDefault();

     

    4LEFT JOIN 连接查询

    SQL

    SELECT c.ID,c.ComputerName,g.Name GroupName 

    FROM [Clients] c 

    LEFT JOIN [Groups] g

    ON c.GroupID = g.ID

    WHERE c.Status=1

    EF

    //Func形式

    var clients = ctx.Clients.Where(c => c.Status == 1)

                .Select(c => new 

                {

                    c.ID,

                    c.ComputerName,

                    GroupName = ctx.Groups.FirstOrDefault(g => g.ID == c.GroupID).Name

                })

                .ToList();

     

    //Linq形式

    var clients = from c in ctx.Clients

                where c.Status == 1

                select new

                {

                    c.ID,

                    c.ComputerName,

                    GroupName = (from g in ctx.Groups

                                where g.ID == c.GroupID

                                select g.Name).FirstOrDefault()

                };

     

    5INNER JOIN 连接查询:

    SQL

    SELECT c.ID,c.ComputerName,g.Name GroupName 

    FROM [Clients] c

    INNER JOIN [Groups] g

    ON c.GroupID = g.ID

    WHERE c.Status=1

    ORDER BY g.Name

    EF

    //Func形式

    var clients = ctx.Clients.Where(c => c.Status == 1)

                .Join(ctx.Group, c => c.GroupID, g => g.ID, (c,g) => 

                {

                    c.ID,

                    c.ComputerName,

                    GroupName = g.Name

                })

                .OrderBy(item => item.GroupName)

                .ToList();

     

     

    //Linq形式1

    var clients = from c in ctx.Clients

                from g in ctx.Groups

                where c.GroupID == g.ID

                orderby g.Name

                select new

                {

                    c.ID,

                    c.ComputerName,

                    GroupName = g.Name

                };

     

    //Linq形式2

    var clients = from c in ctx.Clients

                where c.Status == 1

                join g in ctx.Group

                on c.GroupID equals g.ID into result

                from r in result

                order by r.Name

                select new

                {

                    c.ID,

                    c.ComputerName,

                    GroupName = r.Name

                };

     

    6、分页

    SQL

    -- 方案1

    SELECT TOP 10 * FROM [Clients] WHERE Status=1

    AND ID NOT IN 

    (

        SELECT TOP 20 ID FROM [Clients] WHERE Status=1

        ORDER BY ComputerName

    )

    ORDER BY ComputerName

     

    --方案2

    SELECT * FROM

    (

        SELECT *, ROW_NUMBER() OVER(ORDER BY ComputerName) AS RowNo

        FROM [Clients]

        WHERE Status=1

    )t

    WHERE RowNo >= 20 AND RowNo < 30

    EF

    //Func形式

    var clients = ctx.Clients.Where(c => c.Status=1)

                .OrderBy(c => c.ComputerName)

                .Skip(20)

                .Take(10)

                .ToList();

     

    //Linq形式

    var clients = (from c in ctx.Clients

                orderby c.ComputerName

                select c).Skip(20).Take(10);

     

    7、分组统计:

    SQL

    SELECT Status,COUNT(*) AS Cnt FROM [Clients] 

    GROUP BY Status

    ORDER BY COUNT(*) DESC

    EF

    //Func形式

    var result = ctx.Clients.GroupBy(c => c.Status)

                .Select(s => new

                {

                    Status = s.Key,

                    Cnt = s.Count()

                })

                .OrderByDescending(r => r.Cnt);

     

    //Linq形式

    var result = from c in ctx.Clients

                group c by c.Status into r

                orderby r.Count() descending

                select new

                {

                    Status = r.Key,

                    Cnt = r.Count()

                }; 





  • 相关阅读:
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    Security and Cryptography in Python
    微信小程序TodoList
    C语言88案例-找出数列中的最大值和最小值
    C语言88案例-使用指针的指针输出字符串
  • 原文地址:https://www.cnblogs.com/liyanwei/p/4e2dec72c55d719f05a6c7af054fc297.html
Copyright © 2011-2022 走看看