Linq to SQL присоединиться, затем упорядочить - PullRequest
4 голосов
/ 23 декабря 2011

У меня есть два следующих класса:

book_page

  • chapter_title
  • порядок внутри главы
  • (другие поля)

chapter

  • chapter_title
  • order

У меня есть коллекция book_pages с заголовками их глав.Я хочу иметь возможность отсортировать коллекцию book_page по тому порядку, в котором их "chapter_title" появляется в коллекции "chapters", а затем сортировать по полю "order in chapter".

Я попытался написать объединение в столбце chapter_title, затем упорядочить по chapter.order, затем по page.order_within_page, но безуспешно.Любые предложения?

Мой код:

var ordered_pages= from chapter in chapters
                        join page in book_pages
                        on chapter.chapter_title equals page.chapter_title
                        select new{order = chapter.order,page = page}

var finalList = from row in ordered_pages.OrderBy(c => c.order).ThenBy(p =>p.page.order_within_chapter)
                select row.page;

Это на самом деле не работает и безобразно, даже если это так.Я упускаю какой-то способ использования LINQ для этого?

Ответы [ 3 ]

9 голосов
/ 23 декабря 2011

Полагаю, так оно и должно быть.

var ordered_pages =
        from chapter in chapters
        join page in book_pages
            on chapter.chapter_title equals page.chapter_title
        orderby page.order_within_chapter
        orderby chapter.order
        select page;

page.order_within_chapter сначала закажет, затем будет запущен chapter.order.

8 голосов
/ 23 декабря 2011
var a = db.Chapters;
var b = db.Pages
.Select(p => new { page = p, chapter = a.FirstOrDefault(q => q.Title == p.Caption) })
.OrderBy(p=>p.chapter.order).ThenBy(p=>p.page.order).Select(p=>p.page).ToList();

Или

var b=db.Pages.Join(a, p => p.Caption, p => p.Title, 
(p, q) => new { page = p, chapter = q }).OrderBy(p => p.page.Code)
.ThenBy(p => p.chapter.t1).Select(p=>p.page).ToList();
0 голосов
/ 07 июня 2018

Это сработало для меня:

   var ordered_pages = 
       from chapter in chapters
        join page in book_pages on chapter.chapter_title equals page.chapter_title
        order by page.order_within_chapter, chapter.order
       select page;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...