Linq:包含多个表时的 Orderby

标签 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"; 

页面和关键词是一对多的关系,即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
                      });

关于Linq:包含多个表时的 Orderby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475302/

相关文章:

c# - 关于 System.Linq.Lookup 类

C# 创建具有动态属性的对象 : LINQ select List<object> values by property names array

c# - 如何使用 LINQ 将资源集转换为名称列表?

vb.net - 如何在从 Linq 到数据集的选择期间使用 If 语句

c# - 丑陋的 LINQ 语句,更好的方法?

c# - 使用 LINQ to XML 生成 xml

.net - 使用 LINQ to SQL,其中数据库表可以有额外的列

c# - Linq.Dynamic 抛出异常试图将可为空的 int 转换为字符串

asp.net-mvc - 如果记录不存在,则在为给定行名称选择整数 ID 时,LINQ to Entities 将返回什么?

c# - 如何使用 Entity Framework 实现搜索功能?