我想排序关键字的排序属性。 我在页面 - >关键字之间有一对多的关系。Linq对实体使用一对多关系和排序
问题:如果我执行一个查询理解为:
IEnumerable<page> query = from p in contxt.pages where p.ID == myId select p;
IEnumerable<page> pge = query.First();
我能想到一个单页记录了所有的页面的属性和一个关键字收集组?
我的理解是因为存在一对多关系,我不必执行连接。 Linq to Entity框架应该知道这种关系,并返回一个集合。
所以这是我的理解,所以当我尝试排序keyword.sort,关键字超出范围:
IEnumerable<page> query = from p in contxt.pages where p.ID == myId
orderby p.keywords. select p;
利用上述理解我想查询是不正确的关键字,因为返回为一个集合,所以我必须执行如下排序:
PageKeywords pageKeywords = new PageKeywords();
Keywords keywords;
IEnumerable<page> query = from p in contxt.pages
where p.ID == vals.pageId select p;
page pge = query.First();
pageKeywords.keywords = new List<Keywords>();
pageKeywords.id = pge.ID;
pageKeywords.description = pge.descp;
pageKeywords.title = pge.title;
pageKeywords.showTitle = pge.showTitle;
pageKeywords.keywords = pge.keywords.OrderBy(k => k.sort);
foreach (var item in pageKeywords.keywords)
{
keywords = new Keywords();
keywords.id = item.id;
keywords.name = item.name;
keywords.sort = item.sort;
pageKeywords.keywords.Add(keywords);
}
但是,这并没有奏效。关键字没有按排序排序?上面的代码确实有效,但是我需要按排序属性对关键字进行排序。关键字集合未被排序。
我也试过:
pageKeywords.keywords.Sort((x, y) => int.Compare(x.sort, y.sort));
,没有工作。
我试着去了解,但我错过了什么?任何建议都是可观的。
哇!很好的在查询中创建对象。在我的学习中帮助了很多。想知道,而不是使用var,将返回什么样的数据类型。我的猜测是,数据类型是一个新的PageKeywords对象,还是IEnumerable?甜蜜的代码,节省了很多线条。 –
deDogs
数据类型是'IQueryable'。 –