を外部結合左SQLする:左外側2つのテーブルのTeikoku_SectionsとTeikoku_Divisionsに参加して一緒に、両方のテーブルからの可視アイテムに参加行うLINQの私は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_Section: SECTION_ID INT、 セクション名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)。
私はちょうどSQLにlinqでこれを行う方法に私の頭を回すことができません。
なく、かなりの作業を行い//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:完了、申し訳ありません。 –