Linq表达式 连接查询

 

准备两个类

 class Person
    {
        public string Name { set; get; }
        public int Age { set; get; }
     
    }
    class Dog
    {
        public string Name { get; set; }
        public string Master { get; set; }
    }

插入数据

 List<Person> personList;
        List<Dog> dogList;
        public Form1()
        {
            InitializeComponent();
            personList = new List<Person>()
          {
              new Person (){ Name="Alex",Age=12},
              new Person (){ Name="Peter",Age=16},
              new Person (){ Name="Zack",Age=12},
              new Person (){ Name="TJ",Age=13},
          };
            dogList = new List<Dog>()
            {
                new Dog (){ Name="dog1",Master="Alex"},
                new Dog (){ Name="dog2",Master="TJ"},
                new Dog (){ Name="dog3",Master="Alex"}
            };
        }

内连接

  private void button1_Click(object sender, EventArgs e)
        {
            //内连接
            dataGridView1.DataSource = (from people in personList
                                        join
                            dogs in dogList on people.Name equals dogs.Master
                                        select new
                                        {
                                            Master = people.Name,
                                            Dod = dogs.Name
                                        }).ToList();
       
        }

 

 

分组连接

 private void button1_Click(object sender, EventArgs e)
        {
//分组连接
            dataGridView1.DataSource = (from people in personList
                                    join

                        dogs in dogList on people.Name equals dogs.Master into gc
                                    from gci in gc
                                    select new
                                        {
                                            Master = people.Name,
                                            Dod = gci.Name
    }).ToList();

        }

 

 

 

左外连接

  private void button1_Click(object sender, EventArgs e)
        {     //左外连接
            dataGridView1.DataSource = (from people in personList
                                        join
                            dogs in dogList on people.Name equals dogs.Master into gc
                                        from gci in gc.DefaultIfEmpty()
                                        select new
                                        {
                                            Master = people.Name,
                                            Dod = (gci==null?"NULL":gci.Name)
                                        }).ToList();
        }

 

posted @ 2020-06-09 14:49  当年小清新  阅读(249)  评论(0编辑  收藏  举报