簡體   English   中英

通過另一個集合排序

[英]OrderBy List by another collection

有問題 需要按另一個集合對列表進行排序:

List<Books> b = new List<Books>();

課堂書籍:

public partial class Books
{
    public Books()
    {
        this.BookAuthors = new HashSet<BookAuthors>();
    }

    public int BookID { get; set; }
    public string BookName { get; set; }

    public virtual ICollection<BookAuthors> BookAuthors { get; set; }
}

類BookAuthors:

public partial class BookAuthors
{
    public int Id { get; set; }
    public int AuthorID { get; set; }
    public int BookID { get; set; }

    public virtual Books Books { get; set; }
    public virtual Authors Authors { get; set; }
}

類作者:

public partial class Authors
{
    public Authors()
    {
        this.BookAuthors = new HashSet<BookAuthors>();
    }

    public int AuthorID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual ICollection<BookAuthors> BookAuthors { get; set; }
}

我如何按作者姓氏對b進行排序?

像這樣的事情,盡管對於多位作者而言,仍然是一個問題,您可以通過以下哪種方式訂購哪位作者:

var sorted = 
    from book in b
    let firstAuthor = book.BookAuthors.First()
    let lastName = firstAuthor.LastName
    order book by lastName 
    select book

或者,您可以應用一些邏輯(如果有的話)...

var sorted = 
    from book in b
    let author = book.BookAuthors.FirstOrDefault(a=>a.Primary) ?? 
        book.BookAuthors.FirstOrDefault(a=>a.Editor) ??
        book.BookAuthors.First()
    let lastName = author.LastName
    order book by lastName 
    select book

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM