Не уверен, есть ли прямой способ связать в ModificationStatus с PropValId, поэтому вместо этого просто используйте то, что вы передали выше, и, очевидно, вы должны будете предоставить дополнительные правила, если есть больше ... также только собирается взять Первый один из других типов объектов, но вы можете изменить его, если вам нужны все связанные с ним ...
Я забираю изменения вашей переменной, как определено выше, и, конечно, предполагая,имена таблиц в вашем DbContext, содержащих другие объекты:
var trios = modifications.Select(m => new { Modification = m, // select the modification obj itself
FieldHistory = _applicationDbContext.FieldHistories.FirstOrDefault(fh =>
fh.ModificationId == m.ModificationId && // I am assuming this is required
fh.PropValId == (new List<string> {"Creating", "Created"}.Contains(m.ModificationStatus) ? 1 : 2)),
Event = _applicationDbContext.Events.FirstOrDefault(e => e.EventId == m.EventId)
}).ToList();
Это вернет то, что вы ищете.Если вы хотите, вы можете создать класс, например:
public class Trio {
public Modification Modification { get; set; }
public FieldHistory FieldHistory { get; set; }
public Event Event { get; set; }
public Trio (Modification modification, FieldHistory fieldHistory, Event @event)
{
this.Modification = modification;
this.FieldHistory = fieldHistory;
this.Event = @event;
}
}
Затем изменить на:
var trios = modifications.Select(m => new Trio(m, // select the modification obj itself
_applicationDbContext.FieldHistories.FirstOrDefault(fh =>
fh.ModificationId == m.ModificationId && // I am assuming this is required
fh.PropValId == (new List<string> {"Creating", "Created"}.Contains(m.ModificationStatus) ? 1 : 2)),
_applicationDbContext.Events.FirstOrDefault(e => e.EventId == m.EventId)
)).ToList();