【发布时间】:2011-10-14 18:04:33
【问题描述】:
我在 SQL 中有以下内容:
SELECT * FROM (SELECT Teikoku_Sections.Section_ID, Teikoku_Sections.Section_Name, Teikoku_Sections.Section_Code, Teikoku_Sections.Show_In_Menu FROM Teikoku_Sections WHERE Teikoku_Sections.Show_In_Menu = 1) AS Sections
LEFT OUTER JOIN (SELECT Teikoku_Divisions.Division_ID, Teikoku_Divisions.Division_Name, Teikoku_Divisions.Division_Code, Teikoku_Divisions.Section_ID, Teikoku_Divisions.Show_In_Menu FROM Teikoku_Divisions WHERE Teikoku_Divisions.Show_In_Menu = 1) AS Divisions
ON Sections.Section_ID = Divisions.Section_ID;
对两个表 Teikoku_Sections 和 Teikoku_Divisions 执行左外连接,并将两个表中的可见项连接在一起。
表格具有以下结构:
Teikoku_Section: Section_ID int, Section_Name nvarchar(50), Section_Code int, Show_In_Menu 位
帝国_部门: Division_ID int, Division_Name nvarchar(50) Division_Code int, Section_ID int,
我希望最终得到一个表格,其中显示了 Show_In_Menu 为 true 的所有部分和分区,但在某些情况下,可能没有任何分区对应于一个部分,因此是 LEFT OUTER JOIN。
我只是不知道如何在 linq to sql 中执行此操作。
到目前为止我有:
//Get All Visible sections
IQueryable<Teikoku_Section> visibleSections = from section in db.Teikoku_Sections where section.Show_In_Menu select section;
//Get all visible divisions
IQueryable<Teikoku_Division> visibleDivisions = from division in db.Teikoku_Divisions where division.Show_In_Menu select division;
//Join the two together
IQueryable menuItems = visibleSections.GroupJoin(visibleDivisions, section => section.Section_ID,
division => division.Section_ID, (section, divisions) => new
{
Section_ID = section.Section_ID,
Section_Name = section.Section_Name,
Division_ID = divisions.Select(d => d.Division_ID),
Division_Name = divisions.Select(d => d.Division_Name),
});
return menuItems;
这不太管用...我想我可能缺少 SelectMany(),但我就是不知道应该在哪里或如何放置它。
【问题讨论】:
-
请格式化您的代码。
-
@Kerrek SB:完成,抱歉。
标签: linq-to-sql