У меня есть список, который я хотел бы отсортировать по свойству внутри вложенного списка. Если значение свойства существует внутри одного из объектов, я бы хотел, чтобы оно было первым в списке. В противном случае, если свойство не существует, отсортировать его по свойству в родительском объекте.
Код:
Вот класс высшего уровня;
Я бы хотел отсортировать по определенному TagId . Затем NoteId в порядке возрастания.
public class NoteDto
{
string NoteText { get; set; }
public int NoteId { get; set; }
public List<TagDto> Tags { get; set; }
}
Класс вложенных объектов:
public class TagDto
{
public int TagId { get; set; }
public string Name { get; set; }
}
Пример: если TagId равен 22, я бы хотел, чтобы он был первым в списке, в противном случае сортируйте по NoteId в порядке возрастания.
до сортировки
NoteText: "TestNote1",
NoteId: 1,
Tags: { TagId: 13, Name: "TestTag1" }, { TagId: 16, Name: "TestTag5" }
NoteText: "TestNote2",
NoteId: 2,
Tags: { TagId: 14, Name: "TestTag2" }, { TagId: 17, Name: "TestTag6" }
NoteText: "TestNote3",
NoteId: 3,
Tags: { TagId: 15, Name: "TestTag3" }, { TagId: 18, Name: "TestTag7" }
NoteText: "TestNote4",
NoteId: 4,
Tags: { TagId: 22, Name: "TestTag4" }, { TagId: 19, Name: "TestTag8" }
После сортировки:
NoteText: "TestNote4",
NoteId: 4,
Tags: { TagId: 22, Name: "TestTag4" }, { TagId: 19, Name: "TestTag8" }
NoteText: "TestNote1",
NoteId: 1,
Tags: { TagId: 13, Name: "TestTag1" }, { TagId: 16, Name: "TestTag5" }
NoteText: "TestNote2",
NoteId: 2,
Tags: { TagId: 14, Name: "TestTag2" }, { TagId: 17, Name: "TestTag6" }
NoteText: "TestNote3",
NoteId: 3,
Tags: { TagId: 15, Name: "TestTag3" }, { TagId: 18, Name: "TestTag7" }