• Linq Join


    学生集合:

    1 private static List<Student> stu_li = new List<Student>
    2 {
    3     new Student { UserId="1",Name="Tom",Age=25,DeptId="11"},
    4     new Student { UserId="2",Name="Cos",Age=26,DeptId="11"},
    5     new Student { UserId="3",Name="Tan",Age=27,DeptId="12"},
    6     new Student { UserId="4",Name="Sin",Age=28,DeptId="13"}
    7 };    

    学部集合:

    1 private static List<Deptment> dept_li = new List<Deptment>
    2 {
    3     new Deptment { DeptId="11",DeptName="信息学部",Description="" } 
    4 };

    =========================================================================
    left join
    =========================================================================
    说明:如果学生中的DeptId在学部中不存在的话,请在代码行中加上new Deptment(),否则会报错。

     1 public static void LinqLeftJoin()
     2 {
     3     var data_left_join = from stu in stu_li
     4                                  join dept in dept_li on stu.DeptId equals dept.DeptId into depts
     5                                  from dept_tmp in depts.DefaultIfEmpty(new Deptment())//
     6                                  select new { StudentName = stu.Name, Age = stu.Age, DeptName = dept_tmp.DeptName };
     7 
     8     string str = JsonConvert.SerializeObject(data_left_join);
     9     Console.WriteLine(str);
    10 }

    结果:

     1 [
     2     {
     3         "StudentName":"Tom",
     4         "Age":25,
     5         "DeptName":"信息学部"
     6     },
     7     {
     8         "StudentName":"Cos",
     9         "Age":26,
    10         "DeptName":"信息学部"
    11     },
    12     {
    13         "StudentName":"Tan",
    14         "Age":27,
    15         "DeptName":null
    16     },
    17     {
    18         "StudentName":"Sin",
    19         "Age":28,
    20         "DeptName":null
    21     }
    22 ]

    =========================================================================
    inner join
    =========================================================================

    1  public static void LinqInnerJoin()
    2  {
    3      var data_left_join = from stu in stu_li
    4                           join dept in dept_li on stu.DeptId equals dept.DeptId
    5                           select new { StudentName = stu.Name, Age = stu.Age, DeptName = dept.DeptName };
    6 
    7       string str = JsonConvert.SerializeObject(data_left_join);
    8       Console.WriteLine(str);
    9  }

    结果:

     1 [
     2     {
     3         "StudentName":"Tom",
     4         "Age":25,
     5         "DeptName":"信息学部"
     6     },
     7     {
     8         "StudentName":"Cos",
     9         "Age":26,
    10         "DeptName":"信息学部"
    11     }
    12 ]

    ==========================================================================
    cross join
    ==========================================================================
    //在学部集合中新加了一行数据:

    1 private static List<Deptment> dept_li = new List<Deptment>
    2 {
    3      new Deptment { DeptId="11",DeptName="信息学部",Description="" },
    4      new Deptment { DeptId="16",DeptName="社科学部",Description="" },
    5 };
     1 public static void LinqCrossJoin()
     2 {
     3             var data_left_join = from stu in stu_li
     4                                  from dept in dept_li
     5                                  select new
     6                                  {
     7                                      StudentName = stu.Name,
     8                                      Age = stu.Age,
     9                                      DeptName = dept.DeptName,
    10                                      Description = dept.Description
    11                                  };
    12 
    13             string str = JsonConvert.SerializeObject(data_left_join);
    14             Console.WriteLine(str);
    15 }

    结果:

     1 [
     2     {
     3         "StudentName":"Tom",
     4         "Age":25,
     5         "DeptName":"信息学部",
     6         "Description":""
     7     },
     8     {
     9         "StudentName":"Tom",
    10         "Age":25,
    11         "DeptName":"社科学部",
    12         "Description":""
    13     },
    14     {
    15         "StudentName":"Cos",
    16         "Age":26,
    17         "DeptName":"信息学部",
    18         "Description":""
    19     },
    20     {
    21         "StudentName":"Cos",
    22         "Age":26,
    23         "DeptName":"社科学部",
    24         "Description":""
    25     },
    26     {
    27         "StudentName":"Tan",
    28         "Age":27,
    29         "DeptName":"信息学部",
    30         "Description":""
    31     },
    32     {
    33         "StudentName":"Tan",
    34         "Age":27,
    35         "DeptName":"社科学部",
    36         "Description":""
    37     },
    38     {
    39         "StudentName":"Sin",
    40         "Age":28,
    41         "DeptName":"信息学部",
    42         "Description":""
    43     },
    44     {
    45         "StudentName":"Sin",
    46         "Age":28,
    47         "DeptName":"社科学部",
    48         "Description":""
    49     }
    50 ]

    =========================================================================

     1  /// <summary>
     2     /// 学生
     3     /// </summary>
     4     public class Student
     5     {
     6         public string UserId { get; set; }
     7         public string Name { get; set; }
     8         public int Age { get; set; }
     9 
    10         public string DeptId { set; get; }
    11     }
    12 
    13     /// <summary>
    14     /// 学部
    15     /// </summary>
    16     public class Deptment
    17     {
    18         public string DeptId { get; set; }
    19         public string DeptName { get; set; }
    20         public string Description { get; set; }
    21     }
  • 相关阅读:
    selenium学习笔记05-selenium操作from表单
    selenium学习笔记04-webdriver核心方法的属性和使用
    selenium学习笔记03-selenium webdriver工作原理
    selenium学习笔记02-selenium定位的八大方法
    selenium学习笔记01
    微服务质量保证学习笔记(一)
    pytest,setup和teardown
    pytest用例编写规则、执行测试
    速耀达账套备份与恢复(速达二次开发)
    速耀达系统权限设置(速达二次开发)
  • 原文地址:https://www.cnblogs.com/chenzongyan/p/9767101.html
Copyright © 2020-2023  润新知