Я в настоящее время застреваю, пытаясь выяснить, как сортировать, используя поле Event_Number в моей таблице EventNumbers.Linq: Сортировка дочерней коллекции 2 уровня вниз
var entries = await _context.Entries
.Include(e => e.EntryEvents)
.ThenInclude(ee => ee.EventNumbers)
.ThenInclude(en => en.Event)
.Include(e => e.EntrySwimmers)
.ThenInclude(es => es.Swimmers)
.Include(e => e.EventType)
.Where(e => e.MeetId == meetId && e.LocationId == locationId)
.OrderBy(p => p.EntryEvents
.Select(q => q.EventNumbers)
.OrderBy(c => c.Event_Number)
.Select(c => c.Event_Number)
.FirstOrDefault())
.ToListAsync();
Я прочитал несколько других сообщений по этой теме и чувствую, что я их следую, но сортировка не работает. Я надеюсь, кто-то может указать на мою ошибку. Кстати, я ОЧЕНЬ новичок в Linq/Asp.net. Если этот запрос составлен плохо, пожалуйста, дайте мне знать. Я просто знаю, что у меня сейчас (кроме заказов) работает ...
Редактировать # 2: Итак, я понял теперь, в результате моих взаимодействий с @ Гертом-Арнольдом, что я думаю, что я ДЕЙСТВИТЕЛЬНО необходимо сортировать мои элементы EntryEvents по полю EventNumbers.Event_Number, а не сортировать EventNumbers по номеру Event_Number.
Модель EntryEvents использует поле EventNumbers.Id в качестве ссылки на эту таблицу и когда я показать записи на мой взгляд, я использую:
@foreach (var e in item.EntryEvents)
{
<span>Event Number: @Html.DisplayFor(eventitem => e.EventNumbers.Event_Number)</span>
<span> | </span>
<span>Event Name: @Html.DisplayFor(eventitem => e.EventNumbers.Event.EventName)</span>
<br/>
}
Для справки, мой EntryEvent сущность:
public class EntryEvent
{
public int EntryEventId { get; set; }
public int EventNumberId { get; set; }
public EventNumber EventNumbers { get; set; }
public int EntryId { get; set; }
public Entry Entry { get; set; }
public int EntryTypeId { get; set; }
public EntryType EntryTypes { get; set; }
}
Я не совсем уверен, что ваша модель loks нравится и что именно вы хотите сделать, но проблема звучит так, как будто вы хотите использовать Sort from Linq. Вы можете предоставить ему функцию, описывающую, как сравнивать два элемента списка. Посмотрите https://msdn.microsoft.com/en-us/library/w56d4y5z(v=vs.110).aspx – auX
Сортировка не работает, к сожалению. Когда я пытаюсь выполнить код в статье MSDN, метод «CompareTo» не работает, потому что поле «Event_Number» IEnumerable со списком. – Wyatt