左加入2个列表。其中一个带有子列表

时间:2019-07-02 18:34:22

标签: c# sql linq join

在这种情况下我无法弄清楚任何逻辑……

我有一张桌子,课程很多。 像这样:

Id_Course   Id_Course_Parent    Course_Code Course_Description
1           -1                  BE_A        Basic English A
2           -1                  BF_A        Basic French A
3           1                   BE_B        Basic English B
4           2                   BF_B        Basic French B
5           1                   BE_C        Basic English C

有些人参加了“基础英语A”课程。后来,该课程更改为“基础英语B”,但等效。 拥有“基础英语A”的人和具有“基础英语B”的人被认为是平等的。

我有一些来自Excel工作表的数据(不在数据库中)。 像这样:

+--------+--------------+-------------+
| UserId | User         | Course_Code |
+--------+--------------+-------------+
| 1      | Mr Mittens   | BE_A        |
+--------+--------------+-------------+
| 2      | Sir Meow     | BE_A        |
+--------+--------------+-------------+
| 2      | Sir Meow     | BF_A        |
+--------+--------------+-------------+
| 3      | Captain Purr | BE_B        |
+--------+--------------+-------------+
| 3      | Captain Purr | BF_B        |
+--------+--------------+-------------+
| 4      | Steeve       | BE_B        |
+--------+--------------+-------------+

在此示例中:

  • 用户1、2、3和4具有相同的学习能力(BE_A等效于BE_B)。
  • 用户2和3具有相同的学习方式(BF_A等同于BF_B)。

我想要的是将数据库中的数据与Excel工作表结合起来。

类似的东西:

//(to select all “parent” courses. I only want to display the “main” course in my result).
select * from course where id_course_parent <> -1 as queryDB 
Left join excelsheet ES 
on ES.cours_code = queryDB.course_code

但是我真的不知道从哪里开始……

我有这个查询:

var query = from c1 in coursesDatabase
                                join c2 in coursesCAS on c1.Code equals c2.Code into gj
                                from subc2 in gj.DefaultIfEmpty()
                                select new { c1.Id, c1.Code, c1.Name, AA = subc2?.Code ?? "(Not attended)" };                    

但是我不知道在哪里添加“子列表”部分。

0 个答案:

没有答案