LINQ to OBJECT语句之Join操作符的使用

实例:将员工信息与部门信息关联。

要求:1、join实现员工信息与部门信息关联。

            2、orderby实现以员工入职时间倒序排序。

            3、let投影出员工详细地址。

主代码:

/// <summary>
/// 获取员工并关联部门名称
/// </summary>
/// <returns></returns>
public static List<Emplayee> JoinEmplayeeList()
{
    List<Emplayee> resultList = new List<Emplayee>();
    List<Emplayee> emplayeeList = GetEmplayeeList();        //获取员工信息列表
    List<Department> departmentList = GetDepartmentList();  //获取部门信息列表
    //将员工信息与部门信息关联
    resultList = (from emplayee in emplayeeList
                  join department in departmentList on emplayee.DepartmentId equals department.DepartmentId into t1
                  from depInfo in t1.DefaultIfEmpty()
                  orderby emplayee.AddDate descending
                  let z = emplayee.Country + emplayee.City
                  select new Emplayee()
                  {
                      Name = emplayee.Name,
                      AddDate = emplayee.AddDate,
                      City = emplayee.City,
                      Country = z,
                      DepartmentId = emplayee.DepartmentId,
                      DepartmentName = depInfo == null ? "" : depInfo.DepartmentName  //若关联到部门信息,则返回空字符串
                  }).ToList();
    
    return resultList;
}

其他代码:

/// <summary>
/// 获取员工信息列表
/// </summary>
/// <returns></returns>
public static List<Emplayee> GetEmplayeeList()
{
    List<Emplayee> emplayeeList = new List<Emplayee>();
    Emplayee emplayee1 = new Emplayee() { Name = "张三", AddDate = new DateTime(2011, 2, 17), Country= "中国", City="深圳", DepartmentId = 1 };
    Emplayee emplayee2 = new Emplayee() { Name = "李四", AddDate = new DateTime(2012, 10, 23), Country = "美国", City = "洛杉矶", DepartmentId = 2 };
    Emplayee emplayee3 = new Emplayee() { Name = "王五", AddDate = new DateTime(2012, 8, 6), Country = "法国", City = "巴黎", DepartmentId = 99 };
    emplayeeList.Add(emplayee1);
    emplayeeList.Add(emplayee2);
    emplayeeList.Add(emplayee3);
    return emplayeeList;
}

/// <summary>
/// 获取部门信息列表
/// </summary>
/// <returns></returns>
public static List<Department> GetDepartmentList()
{
    List<Department> departmentList = new List<Department>();
    Department department1 = new Department() { DepartmentId = 1, DepartmentName = "研发部" };
    Department department2 = new Department() { DepartmentId = 2, DepartmentName = "人事部" };
    Department department3 = new Department() { DepartmentId = 3, DepartmentName = "财务部" };
    departmentList.Add(department1);
    departmentList.Add(department2);
    departmentList.Add(department3);
    return departmentList;
}
实体类:
/// <summary>
/// 员工信息类
/// </summary>
public class Emplayee 
{
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name { get; set; }

    /// <summary>
    /// 入职时间
    /// </summary>
    public DateTime AddDate { get; set; }

    /// <summary>
    /// 国家
    /// </summary>
    public string Country { get; set; }

    /// <summary>
    /// 城市
    /// </summary>
    public string City { get; set; }

    /// <summary>
    /// 部门ID
    /// </summary>
    public int DepartmentId { get; set; }

    /// <summary>
    /// 部门名称
    /// </summary>
    public string DepartmentName { get; set; }
}

/// <summary>
/// 部门信息类
/// </summary>
public class Department
{
    /// <summary>
    /// 部门ID
    /// </summary>
    public int DepartmentId { get; set; }

    /// <summary>
    /// 部门名称
    /// </summary>
    public string DepartmentName { get; set; }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值