views:

23

answers:

3

Following works (ordered by name):
from t in context.Table1.OrderBy( "it.Name" ) select t

This doesn't work (no ordering):
from t in context.Table1.OrderBy( "it.Name" )
join t2 in context.Table2 on t.SomeId equals t2.SomeId select t

Nor does this (trying to reference the parent table to order):
from t in context.Table1
join t2 in context.Table2.OrderBy( "it.Table1.Name" ) on t.SomeId equals t2.SomeId select t

Nor does this (trying to order on the child table):
from t in context.Table1
join t2 in context.Table2.OrderBy( "it.ChildName" ) on t.SomeId equals t2.SomeId select t

How do I cause OrderBy not to be ignored while joining?

A: 

You might try ordering after the join, instead of before/during.

from t in context.Table1
join t2 in context.Table2 
on t.SomeId equals t2.SomeId 
orderby t.Name
select t
Andy_Vulhop
see above comment
dudeNumber4
A: 

For your second example, try:

var res = from t in context.Table1
          join t2 in context.Table2 on t.SomeId equals t2.SomeId 
          orderby t.Name
          select t;

This should order the joined results.

MicScoTho
I must use the OrderBy method - column name will be dynamic
dudeNumber4
+1  A: 

This will work:

(from t in context.Table1
 join t2 in context.Table2 on t.SomeId equals t2.SomeId 
 select t).OrderBy( "it.Name" );

However, you should not be using join at all, as @moi_meme comments.

Craig Stuntz