[ACCEPTED]-linq to sql: join multiple columns from the same table-join

Accepted answer
Score: 31

This is the only way I was able to get it 1 to work (in c#).

var qry = from t1 in table1
          join t2 in table2
          on new {t1.ID,t1.Country} equals new {t2.ID,t2.Country}
          ...
Score: 15

You can put your query inside a Where clause 4 instead of using the join operator.

The join 3 operator supports multiple clauses in VB.NET, but 2 not C#.

Alternatively, you can use the ANSI-82 1 style of 'SQL' syntax, e.g.:

from t1 in table1
from t2 in table1
where t1.x == t2.x
&& t1.y == t2.y
Score: 13

from http://www.onedotnetway.com/linq-to-sql-join-on-multiple-conditions/

Both these tables have PostCode and 6 CouncilCode as common fields. Lets say that 5 we want to retrieve all records from ShoppingMall 4 where both PostCode and CouncilCode on House 3 match. This requires us to do a join using 2 two columns. In LINQ such a join can be 1 done using anonymous types. Here is an example.

var query = from s in context.ShoppingMalls
        join h in context.Houses
        on
        new { s.CouncilCode, s.PostCode }
        equals
         new { h.CouncilCode, h.PostCode }
        select s;
Score: 6
var query = from s in context.ShoppingMalls
join h in context.Houses
on
new {CouncilCode=s.CouncilCode, PostCode=s.PostCode }
equals
new {CouncilCode=h.District, PostCode=h.ZipCode }
select s;

This is applicable for any kind of datatype.

0

Score: 1

In VB:

 dim qry = FROM t1 in table1 _
           JOIN t2 in table2 on t2.ID equals t1.ID _
           AND t2.Country equals t1.Country 

0

More Related questions