LINQ結合サンプル

LINQ結合

内部結合
   var ij = from s in Sales join t in Titles on
        s.Title_id equals t.Title_id
             select new
             {
                TitleId = s.Title_id,
                OrderNum = s.Ord_num,
                Title = t.Title
             };
    
    ij.Dump();
SELECT [t0].[title_id] AS [TitleId], [t0].[ord_num] AS [OrderNum], [t1].[title] AS [Title]
FROM [sales] AS [t0]
INNER JOIN [titles] AS [t1] ON [t0].[title_id] = [t1].[title_id]
外部結合
   var lr = from sa in Sales
                join t in Titles on sa.Title_id equals t.Title_id into tempTitle
                from title in tempTitle.DefaultIfEmpty()
                join st in Stores on sa.Stor_id equals st.Stor_id into tempStore
                from store in tempStore.DefaultIfEmpty()
            select new
             {
                TitleId = sa.Title_id,
                OrderNum = sa.Ord_num,
                Title = title.Title,
                StoreName = store.Stor_name
             };
    
    lr.Dump();
SELECT [t0].[title_id] AS [TitleId], [t0].[ord_num] AS [OrderNum], [t1].[title] AS [Title], [t2].[stor_name] AS [StoreName]
FROM [sales] AS [t0]
LEFT OUTER JOIN [titles] AS [t1] ON [t0].[title_id] = [t1].[title_id]
LEFT OUTER JOIN [stores] AS [t2] ON [t0].[stor_id] = [t2].[stor_id]