Я бы хотел отсортировать ключевые слова по свойству сортировки.
У меня есть отношение «один-много» между страницей -> ключевое слово.
Вопрос: Если я выполню запрос на понимание как:
IEnumerable<page> query = from p in contxt.pages where p.ID == myId select p;
IEnumerable<page> pge = query.First();
Могу ли я рассчитывать на набор из одной страницы со всеми свойствами страницы и одним набором ключевых слов?
Насколько я понимаю, поскольку существуют отношения один-много, мне не нужно выполнять соединение. Платформа Linq to Entity должна знать об этих отношениях и возвращать коллекцию.
Так что это мое понимание, поэтому, когда я пытаюсь отсортировать ключевое слово.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));
Что не сработало.
Я пытался понять, но мне чего-то не хватает? Любые предложения будут полезны.