开发者

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜