РЕШЕНИЕ:
ParticipantsWithData = await _context.Participants.Select(p => new ParticipantWithData {
Participant = p,
Team = p.Teams,
FirstWeight = p.ParticipantData.Where(pd => pd.ParticipantId == p.Id).OrderBy(x => x.Date).FirstOrDefault(),
LastWeight = p.ParticipantData.Where(pd => pd.ParticipantId == p.Id).OrderByDescending(x => x.Date).FirstOrDefault()
}).ToListAsync();
А потом модель:
public class ParticipantWithData {
public Participant Participant { get; set; }
public Team Team { get; set; }
public ParticipantData FirstWeight { get; set; }
public ParticipantData LastWeight { get; set; }
}
Таким образом, я могу сделать x.FirstWeight.Date
или x.FirstWeight.Weight
при циклическом просмотре Участников (см. Модель ParticipantData ниже),
ВОПРОС:
Как я могу использовать это на мой взгляд?
var query = await _context.Participants.Select(p => new {
Participant = p,
Team = p.Teams,
FirstWeight = p.ParticipantData.OrderBy(x => x.Date).FirstOrDefault(),
LastWeight = p.ParticipantData.OrderByDescending(x => x.Date).FirstOrDefault()
}).ToListAsync();
Если возможно, я бы хотел сделать это строго типизированной моделью, но я не знаю, как это сделать. Все, что я до сих пор пробовал, не работает.
Модель участника:
public class Participant {
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Guid TeamId { get; set; }
[ForeignKey("TeamId")]
public Team Teams { get; set; }
public IList<ParticipantData> ParticipantData { get; set; }
}
Модель Данных Участника:
public class ParticipantData {
public Guid Id { get; set; }
public double? Weight { get; set; }
public DateTime Date { get; set; }
public Guid ParticipantId { get; set; }
public Participant Participants { get; set; }
}
Новая модель, над которой я работаю:
public class ParticipantWithData {
public Participant Participant { get; set; }
public Team Team { get; set; }
public ParticipantData ParticipantData { get; set; }
public double? FirstWeight { get; set; }
public double? LastWeight { get; set; }
}
Может быть, я далеко ...?