Join(交集) groupJoin(聯集)

理解一下 聯集 交集

線上測試

using System;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using Newtonsoft.Json;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {

            var playerList = new List<Player>
            {
                new Player { Id = 1, Name = "A Player", TypeId = 0 },
                new Player { Id = 2, Name = "B Player", TypeId = 1 },
                new Player { Id = 4, Name = "C Player", TypeId = 2 },
            };
            var typeList = new List<TypeData>
            {
                new TypeData { Id = 1, Name = "Type 1" },
                new TypeData { Id = 2, Name = "Type 2" },
                new TypeData { Id = 3, Name = "Type 3" },
                new TypeData { Id = 4, Name = "Type 4" },
            };
         
            var list = playerList.Join(
                            typeList,
                            person => person.TypeId,
                            phone => phone.Id,
                            (left, right) => left);

            Console.Write("左側取交集。\r\n");
            Console.Write(JsonConvert.SerializeObject(list) + "\r\n");
         
            var list1 = playerList.Join(
                            typeList,
                            person => person.TypeId,
                            phone => phone.Id,
                            (left, right) => right);
         
            Console.Write("右側取交集。\r\n");
            Console.Write(JsonConvert.SerializeObject(list1) + "\r\n");
         
            var glist = playerList.GroupJoin(
                            typeList,
                            person => person.TypeId,
                            phone => phone.Id,
                            (left, right) => left);
         
            Console.Write("左側聯集。留左砍右。\r\n");
            Console.Write(JsonConvert.SerializeObject(glist) + "\r\n");
         
            var glist1 = playerList.GroupJoin(
                            typeList,
                            person => person.TypeId,
                            phone => phone.Id,
                            (left, right) => right);
                       
            Console.Write("右側聯集。留右砍左。\r\n");
            Console.Write(JsonConvert.SerializeObject(glist1) + "\r\n");
        }
     
        public class TypeData
        {
            public int Id { get; set; }
            public string Name { get; set; }
        }
     
        public class Player
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public int TypeId { get; set; }
        }
    }
}



留言