EF 左连接的试验

1.概要

左连接是很常用的方法。

2.代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 表对象化链表排序
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine();
            Console.WriteLine("表对象化链表排序");
            Program p = new Program();
            p.main();
            Console.ReadKey();
        }
        private void main()
        {
            test_groupJoin();
            //test_join();
            //test_leftJoin();
            //test2();
        }
        private void test_groupJoin()
        {
            var groupList = A.getList().GroupJoin(B.getList(), a => a.bid, b => b.id, (a, b) => new { a.ns, a.id, b });
            foreach (var a in groupList)
            {
                Console.WriteLine(a.id + " " + a.ns + " ");
                var c = a.b;
                var d = c.Select(h => new { h.ns2 }).FirstOrDefault();
                if (d != null)
                {
                    Console.WriteLine(d.ns2);
                }
                Console.WriteLine();
            }
        }
        private void test_join()
        {
            var tlist = from a in A.getList() join b in B.getList() on a.bid equals b.id select new { a.id,a.ns,bid= b.id,b.ns2};
            foreach(var it in tlist)
            {
                Console.WriteLine(it.id + " " + it.ns);
            }
        }
        private void test_leftJoin()
        {
            var tlist = from a in A.getList() join b in B.getList() on a.bid equals b.id 
                        into dd 
                        from dt in dd.DefaultIfEmpty()
                        select new { a.id, a.ns, bid = dt==null?0:dt.id, ns2 = dt==null?"":dt.ns2};
            foreach (var it in tlist)
            {
                Console.WriteLine(it.id + " " + it.ns+ " "+it.ns2);
            }
        }
        private void test2()
        {
            List<List<int>> numbers = new List<List<int>>(){
                new List<int>{1,2,3},
                new List<int>{4,5,6},
                new List<int>{7,8,9} 
            };
            var result = numbers.SelectMany(collection => collection);
            foreach (var item in result)
            {
                Console.WriteLine(item);
            }
        }
    }
    public class A
    {
        public int id;
        public string ns;
        public int bid;
        public A(int id,string n,int bid) {
            this.id = id;
            this.ns = n;
            this.bid = bid;
        }
        public static List<A> getList()
        {
            List<A> li = new List<A>();
            li.Add(new A(1, "a1",1));
            li.Add(new A(2, "a2",2));
            li.Add(new A(3, "a3",0));
            return li;
        }
    }
    public class B
    {
        public int id;
        public string ns2;
        public B(int id,string n)
        {
            this.id = id;
            this.ns2 = n;
        }
        public static List<B> getList()
        {
            List<B> li = new List<B>();
            li.Add(new B(1, "b1"));
            li.Add(new B(2, "b2"));
            return li;
        }
    }

}

3.运行结果

3.1 test_groupJoin();

表对象化链表排序
1 a1
b1

2 a2
b2

3 a3

3.2 test_join

表对象化链表排序
1 a1
2 a2

3.3 test_leftJoin();

表对象化链表排序
1 a1 b1
2 a2 b2
3 a3

4.参考连接

如何在EF中实现left join(左联接)查询_ef left join_菜鸟de成长历程的博客-优快云博客

ef 使用left join的两种写法_ef left join_看月亮的向月葵的博客-优快云博客

EF 实现left join左联接查询_51CTO博客_querywrapper left join

https://www.cnblogs.com/keeplearningandsharing/p/16625086.html

https://www.cnblogs.com/Kit-L/p/14839434.html

为什么pip换了国内源刚开始很快后来很慢用pip安装langflow的时候要下载很多东西,已经换了清华源了,前面还挺快的,到后面就很慢了 ,后来换成阿里源,但还是这样 Downloading https://mirrors.aliyun.com/pypi/packages/97/8c/b49611a3daf01c3980d1da920a63ff4dc12d607d0edcb8a86ba331a7c686/fastapi-0.115.10-py3-none-any.whl (94 kB) Downloading https://mirrors.aliyun.com/pypi/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl (94 kB) Collecting starlette<0.46.0,>=0.40.0 (from fastapi<1.0.0,>=0.115.2->langflow-base==0.1.1->langflow) Downloading https://mirrors.aliyun.com/pypi/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl (71 kB) Collecting fastapi<1.0.0,>=0.115.2 (from langflow-base==0.1.1->langflow) Downloading https://mirrors.aliyun.com/pypi/packages/8f/7d/2d6ce181d7a5f51dedb8c06206cbf0ec026a99bf145edd309f9e17c3282f/fastapi-0.115.8-py3-none-any.whl (94 kB) Downloading https://mirrors.aliyun.com/pypi/packages/e6/7f/bbd4dcf0faf61bc68a01939256e2ed02d681e9334c1a3cef24d5f77aba9f/fastapi-0.115.7-py3-none-any.whl (94 kB) Downloading https://mirrors.aliyun.com/pypi/packages/52/b3/7e4df40e585df024fac2f80d1a2d579c854ac37109675db2b0cc22c0bb9e/fastapi-0.115.6-py3-none-any.whl (94 kB) Collecting starlette<0.42.0,>=0.40.0 (from fastapi<1.0.0,>=0.115.2->langflow-base==0.1.1->langflow) Downloading https://mirrors.aliyun.com/pypi/packages/96/00/2b325970b3060c7cecebab6d295afe763365822b1306a12eeab198f74323/starlette-0.41.3-py3-none-any.whl (73 kB) Collecting fastapi<1.0.0,>=0.115.2 (from langflow-base==0.1.1->langflow) Downloading https://mirrors.aliyun.com/pypi/packages/54/c4/148d5046a96c428464557264877ae5a9338a83bbe0df045088749ec89820/fastapi-0.115.5-py3-none-any.whl (94 kB) 每下一个这些东西,要1分钟左右。而直接点击这些链接在浏览器里下载只要一瞬间,我的网络环境正常。会不会是因为向服务器发送了太多请求,还是因为pip设计的问题,只要连续下载的东西多了就会性能下降?
03-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值