我在SQL如下:LINQ to 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位
Teikoku_Divisions: Division_ID INT, Division_Name爲nvarchar(50) Division_Code int, Section_ID int,< ==父節的ID Show_In_Menu位
我想結束一個表格,顯示Show_In_Menu爲true的所有部分和分部,但在某些情況下,可能沒有任何部分對應於部分,因此爲LEFT OUTER JOIN。
我只是無法讓我的腦海轉向如何做到這一點在LINQ到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:完成,對不起。 –