LEFT OUTER JOIN in LINQ

后端 未结 22 2513
臣服心动
臣服心动 2020-11-21 04:49

How to perform left outer join in C# LINQ to objects without using join-on-equals-into clauses? Is there any way to do that with where clause? Corr

22条回答
  •  情歌与酒
    2020-11-21 05:14

    class Program
    {
        List listOfEmp = new List();
        List listOfDepart = new List();
    
        public Program()
        {
            listOfDepart = new List(){
                new Department { Id = 1, DeptName = "DEV" },
                new Department { Id = 2, DeptName = "QA" },
                new Department { Id = 3, DeptName = "BUILD" },
                new Department { Id = 4, DeptName = "SIT" }
            };
    
    
            listOfEmp = new List(){
                new Employee { Empid = 1, Name = "Manikandan",DepartmentId=1 },
                new Employee { Empid = 2, Name = "Manoj" ,DepartmentId=1},
                new Employee { Empid = 3, Name = "Yokesh" ,DepartmentId=0},
                new Employee { Empid = 3, Name = "Purusotham",DepartmentId=0}
            };
    
        }
        static void Main(string[] args)
        {
            Program ob = new Program();
            ob.LeftJoin();
            Console.ReadLine();
        }
    
        private void LeftJoin()
        {
            listOfEmp.GroupJoin(listOfDepart.DefaultIfEmpty(), x => x.DepartmentId, y => y.Id, (x, y) => new { EmpId = x.Empid, EmpName = x.Name, Dpt = y.FirstOrDefault() != null ? y.FirstOrDefault().DeptName : null }).ToList().ForEach
                (z =>
                {
                    Console.WriteLine("Empid:{0} EmpName:{1} Dept:{2}", z.EmpId, z.EmpName, z.Dpt);
                });
        }
    }
    
    class Employee
    {
        public int Empid { get; set; }
        public string Name { get; set; }
        public int DepartmentId { get; set; }
    }
    
    class Department
    {
        public int Id { get; set; }
        public string DeptName { get; set; }
    }
    

    OUTPUT

提交回复
热议问题