Linq:包括多个表时的Orderby

时间:2011-06-25 01:57:17

标签: linq linq-to-entities

目前正在学习Linq to Entity。我成功了,但是却遇到了orderby子句以及它与多个表的使用。

    var query = from k in contxt.pages.Include("keywords") 
where k.ID == vals.pageId select k;

我对上面代码的理解是它创建了一个内部联接,其中ID等于pageId。

那么我难以想象的是如何在两个表上执行orderby? 我想对两个表格进行排序。

我试过了:

var query = from k in contxt.pages.Include("keywords") where k.ID == vals.pageId orderby k.keywords.**?** select k;

问号不应该在那里。我表明我想要排序的列不在那里。试试这个k.Kegwords。不显示列。

我会编写一个SQL查询,如下所示:

string query = "SELECT pages.page, pages.title, pages.descp, keywords.keyword
FROM pages INNER JOIN keywords ON pages.ID = keywords.pageID
ORDER BY keywords.sort, pages.page"; 

页面和关键字具有1对多关系,即FK关键字。

谢谢你, deDogs

1 个答案:

答案 0 :(得分:4)

你走了。

          var result = (from x in pages
                      join y in keywords on x.ID equals y.pageID 
                      orderby y.sort, x.page
                      select new
                      {
                          x.Page,
                          x.title,
                          x.descp,
                          y.keyword
                      });