EF OrderBy method doesn't work with joins
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 con开发者_如何学Ctext.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?
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.
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.
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
精彩评论