问题描述
|
目前正在向实体学习Linq。我成功了,但是对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\";
页面和关键字之间存在一对多关系,即FK关键字。
谢谢,
德狗
解决方法
干得好。
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
});