如何按子对象排序父对象

How to order parent object by child sub object

我有一个列表< PaperAbstract > class。 PaperAbstract class 有一组作者。其中一位作者有一个标志 IsSubmitting true。我如何按提交作者姓氏订购我的列表< PaperAbstract >?

public class PaperAbstract
{
    public string Title { get; set; }
    public List<Author> Authors { get; set; }
}

public class Author
{
    public bool IsSubmitting { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

例如:

var paperAbstracts = new List<PaperAbstract>();
paperAbstracts.Add(new PaperAbstract
{
    Title = "Abstract 2",
    Authors = new List<Author>
    {
        new Author { IsSubmitting = false, FirstName = "F5", LastName = "L5"},
        new Author { IsSubmitting = true, FirstName = "F6", LastName = "L6"}
    }
});
paperAbstracts.Add(new PaperAbstract
{
    Title = "Abstract 3",
    Authors = new List<Author>
    {
        new Author { IsSubmitting = true, FirstName = "F1", LastName = "L1"},
        new Author { IsSubmitting = false, FirstName = "F2", LastName = "L2"}
    }
});
paperAbstracts.Add(new PaperAbstract
{
    Title = "Abstract 1",
    Authors = new List<Author>
    {
        new Author { IsSubmitting = false, FirstName = "F3", LastName = "L3"},
        new Author { IsSubmitting = true, FirstName = "F4", LastName = "L4"}
    }
});

paperAbstracts 的正确顺序应该是摘要 3、摘要 1、摘要 2。

您可以使用 LINQ 中的 OrderBy

 var result = input.OrderBy(x => x.Authors
                                  .First(a => a.IsSubmitting).LastName)