LINQ left outer join more than 2 datasets

napii21

Member
Joined
Oct 27, 2011
Messages
18
Programming Experience
3-5
Hi all,

i managed to join 2 datasets using left outer join LINQ:

VB.NET:
Dim myListOfAnonymousTypes = (From T1 In ds.Tables("dateTotal") Group Join T2 In ds.Tables("Total") On T2("summary") Equals T1("summary") Into left1 = Group From T2 In left1.DefaultIfEmpty Select Summary = T2("summary"), Total = If(T2("total"), 0), date1 = If(T1("dateTotal"), 0))

Now how can i join more than 2 datasets using left outer join LINQ?
this is the sql:



VB.NET:
SELECT      v_weekTotal.summary, v_weekTotal.total, v_date1.date1, v_date2.date2, v_date3.date3, v_date4.date4, v_date5.date5, v_date6.date6, v_date7.date7
FROM         v_weekTotal 
LEFT OUTER JOIN
                      v_date1 ON v_weekTotal.summary = v_date1.summary 
LEFT OUTER JOIN
                      v_date2 ON v_weekTotal.summary = v_date2.summary 
LEFT OUTER JOIN
                      v_date3 ON v_weekTotal.summary = v_date3.summary 
LEFT OUTER JOIN
                      v_date4 ON v_weekTotal.summary = v_date4.summary
 LEFT OUTER JOIN
                      v_date5 ON v_weekTotal.summary = v_date5.summary 
LEFT OUTER JOIN
                      v_date6 ON v_weekTotal.summary = v_date6.summary
 LEFT OUTER JOIN
                      v_date7 ON v_weekTotal.summary = v_date7.summary
 
In the SQL you simply add more 'LEFT OUTER JOIN ... ON ...'. Have you tried doing the equivalent in the LINQ code because, while I've never joined like that, it seems the logical thing to do.
 
yeah,it works. thanks jmcilhinney.

this the LINQ code :

VB.NET:
Dim myListOfAnonymousTypes = (From T1 In ds.Tables("Total") _
Group Join T2 In ds.Tables("dateTotal1") On T1("summary") Equals T2("summary") Into right1 = Group From T2 In right1.DefaultIfEmpty _
Group Join T3 In ds.Tables("dateTotal2") On T1("summary") Equals T3("summary") Into right2 = Group From T3 In right2.DefaultIfEmpty _
Group Join T4 In ds.Tables("dateTotal3") On T1("summary") Equals T4("summary") Into right3 = Group From T4 In right3.DefaultIfEmpty _
Group Join T5 In ds.Tables("dateTotal4") On T1("summary") Equals T5("summary") Into right4 = Group From T5 In right4.DefaultIfEmpty _
Group Join T6 In ds.Tables("dateTotal5") On T1("summary") Equals T6("summary") Into right5 = Group From T6 In right5.DefaultIfEmpty _
Group Join T7 In ds.Tables("dateTotal6") On T1("summary") Equals T7("summary") Into right6 = Group From T7 In right6.DefaultIfEmpty _
Group Join T8 In ds.Tables("dateTotal7") On T1("summary") Equals T8("summary") Into right7 = Group From T8 In right7.DefaultIfEmpty _
Select Summary = If(right1 Is Nothing, String.Empty, T1("summary")), Total = If(right1 Is Nothing, String.Empty, T1("total")), date1 = If(T2 Is Nothing, 0, T2("dateTotal1")), date2 = If(T3 Is Nothing, 0, T3("dateTotal2")), date3 = If(T4 Is Nothing, 0, T4("dateTotal3")), date4 = If(T5 Is Nothing, 0, T5("dateTotal4")), date5 = If(T6 Is Nothing, 0, T6("dateTotal5")), date6 = If(T7 Is Nothing, 0, T7("dateTotal6")), date7 = If(T8 Is Nothing, 0, T8("dateTotal7")))
 
Back
Top