我想排序關鍵字的排序屬性。 我在頁面 - >關鍵字之間有一對多的關係。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'。 –