首页 > 其他 > 详细

LINQ笔记-复杂案例

时间:2019-12-28 18:01:17      阅读:68      评论:0      收藏:0      [点我收藏+]

实体:

    public class Person
    {
        public string Name { get; set; }
        public int CompanyID { get; set; }
    }
    public class Company
    {
        public int ID { get; set; }
    }
List<Company> companyList = new List<Company> {
                new Company{ ID=1},
                new Company{ ID=2},
                new Company{ ID=3}
            };
            List<Person> personList = new List<Person> {
                new Person{ CompanyID=1,Name="zhangsan"},
                new Person{ CompanyID=1,Name="lisi"},
                new Person{ CompanyID=2,Name="wangwu"}
            };

内连接:

var list1 = from c in companyList
                       join p in personList on c.ID equals p.CompanyID
                       select new { CompanyID = c.ID, PersonName = p.Name };

左连接:personList的数据放入临时变量personTempList中,并调用DefaultIfEmpty(),意思是为空就使用默认值

var list1 = from c in companyList
                       join p in personList on c.ID equals p.CompanyID into personTempList
                       from pTemp in personTempList.DefaultIfEmpty()
                       select new { CompanyID = c.ID, PersonName = pTemp?.Name };

也可以指定默认值:

var list1 = from c in companyList
                       join p in personList on c.ID equals p.CompanyID into personTempList
                       from pTemp in personTempList.DefaultIfEmpty(new Person { Name="DefaultName"})
                       select new { CompanyID = c.ID, PersonName = pTemp.Name };

未完待续...

LINQ笔记-复杂案例

原文:https://www.cnblogs.com/fanfan-90/p/12112289.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!