Linq到SQL连接,然后按顺序
本文关键字:然后 顺序 连接 SQL Linq | 更新日期: 2023-09-27 18:18:34
我有以下两个类:
book_page
- chapter_title
- 章节内顺序
- (其他领域)
- chapter_title
- 为
我有一个book_pages及其章节标题的集合。我希望能够按照"chapter_title"在"章节"集合中出现的顺序对book_page集合进行排序,然后按照"章节内的顺序"字段进行排序。
我试着在chapter_title列上写一个join,然后按章节排序。然后按页排序。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来做这件事的方法吗?
我相信它应该是这样的。
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;
页面。Order_within_chapter将首先排序,然后是章节。订单将会运行。
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();
这对我有用:
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;