EF中Linq的用法

这篇博客详细介绍了在EF中使用Linq的各种操作,包括In、分页、Like、Join、LeftJoin等21种用法,并通过示例代码进行演示,适合初学者和进阶者参考学习。
摘要由CSDN通过智能技术生成

一、用法举例

1.In操作

代码如下(示例):

private static void QueryIn()
        {
   
            using (CodeFirstContext context = new CodeFirstContext())
            {
   

                int[] ids = new int[] {
    1, 2, 3 };

                var clientList1 = from c in context.Clients
                                  where ids.Contains(c.Id)
                                  select c;
                foreach (var item in clientList1)
                {
   
                    Console.WriteLine(item.ClientName);
                }

                var clientList2 = context.Clients.Where(c => ids.Contains(c.Id));
                foreach (var item in clientList2)
                {
   
                    Console.WriteLine(item.ClientName);
                }

                var clientList3 = context.Clients.Where(c => new string[] {
    "Fisea wannfsfsf", "Ganter" }.Contains(c.ClientName));
                clientList3.ToList().ForEach(c =>
                {
   
                    Console.WriteLine(c.ClientName);
                });

                foreach (var item in clientList3)
                {
   
                    Console.WriteLine(item.ClientName);
                }
            }
            //Sql:

            //        SELECT
            //[Extent1].[Id] AS[Id], 
            //[Extent1].[Name] AS[Name], 
            //[Extent1].[Tel] AS[Tel], 
            //[Extent1].[Sex] AS[Sex], 
            //[Extent1].[Address] AS[Address], 
            //[Extent1].[CreateTime] AS[CreateTime], 
            //[Extent1].[CreatorId] AS[CreatorId]
            //FROM[dbo].[Client] AS[Extent1]
            //WHERE[Extent1].[Id] IN(1, 2, 3)
        }

2.分页

代码如下(示例):

 private static void QueryPaging()
        {
   
            using (CodeFirstContext context = new CodeFirstContext())
            {
   
                var list = context.Clients.Where(c => new int[] {
    1, 2, 3 }.Contains(c.Id))
                                          .OrderBy(c => c.CreateTime)
                                          .Select(c => new
                                          {
   
                                              Name = c.ClientName,
                                              Addr = c.Address
                                          })
                                          .Skip(1)
                                          .Take(3);
                foreach (var item in list)
                {
   
                    Console.WriteLine($"{item.Name},{item.Addr}");
                }
            }
            //Sql:
            //        SELECT
            //[Extent1].[Id] AS[Id], 
            //[Extent1].[Name] AS[Name], 
            //[Extent1].[Address] AS[Address]
            //FROM[dbo].[Client] AS[Extent1]
            //WHERE[Extent1].[Id] IN(1, 2, 3)
            //ORDER BY row_number() OVER(ORDER BY[Extent1].[CreateTime] ASC)
            //OFFSET 1 ROWS FETCH NEXT 3 ROWS ONLY
        }

3.Like

代码如下(示例):

 private static void QueryLike()
        {
   
            using (CodeFirstContext context = new CodeFirstContext())
            {
   
                var list = context.Clients.Where(c => c.Address.StartsWith("深圳") && c.ClientName.EndsWith("a"))
                                          .Where(c => c.Tel.Contains("159"))
                                          .OrderBy(c => c.CreateTime);
                foreach (var client in list)
                {
   
                    Console.WriteLine(client.ClientName);
                }
            }
            //Sq;
            //        SELECT
            //[Extent1].[Id] AS[Id], 
            //[Extent1].[Name] AS[Name], 
            //[Extent1].[Tel] AS[Tel], 
            //[Extent1].[Sex] AS[Sex], 
            //[Extent1].[Address] AS[Address], 
            //[Extent1].[CreateTime] AS[CreateTime], 
            //[Extent1].[CreatorId] AS[CreatorId]
            //FROM[dbo].[Client] AS[Extent1]
            //WHERE([Extent1].[Address] LIKE N'深圳%') AND([Extent1].[Name] LIKE N'%a') AND([Extent1].[Tel] LIKE N'%159%')
            //ORDER BY[Extent1].[CreateTime] ASC
        }

4.Join

代码如下(示例):

 private static void QueryJoin()
        {
   
            using (CodeFirstContext context = new CodeFirstContext())
            {
   
                var list = (from o in context.Orders
                            join p in context.Products on o.ProId equals p.Id
                            where new int[] {
    1, 2, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值