Есть ли причина, по которой простое удаление FirstOrDefault
в конце не является решением здесь? Я чувствую, что могу что-то неправильно понять.
EDIT:
Мне кажется, я вижу, что ты пытаешься сделать. Проблема в том, что вы создаете список в операторе выбора, когда оператор выбора работает только над одной вещью за раз. Это в основном отображение типа ввода на новый тип вывода.
Попробуйте что-то вроде этого:
eventList = _context.Events.Where(e => e.iEntityId == x.iEntityId && //FILTER EVENTS
e.iStatusId >= eventStatusMin &&
e.iStatusId <= eventStatusMax)
.Select(e => new SalesEventMatchVo() //MAP TO SALESEVENT
{
vehicleName = _context.Quotes.Select(q=>q).Where(q=>q.iEventId == e.iEventId).FirstOrDefault().vchMake + " " + _context.Quotes.Select(q=>q).Where(q=>q.iEventId == e.iEventId).FirstOrDefault().vchModel,
eventId = e.iEventId,
salesPerson = e.chAssignedTo,
eventStatusDesc=_context.RefDefinitions.Select(r=>r).Where(r=>r.iParameterId==e.iStatusId).FirstOrDefault().vchParameterDesc,
eventStatusId =(int)e.iStatusId,
eventSourceDesc=_context.RefDefinitions.Select(r=>r).Where(r=>r.iParameterId==e.iSourceId).FirstOrDefault().vchParameterDesc,
createDate = e.dtInsertDate
})
.ToList() //CONVERT TO LIST
В качестве примечания: если вам по какой-то причине вам не нужен List
, я бы вместо этого сохранил foo.eventList
как IEnumerable<SalesEvent>
. Это позволяет вам пропустить преобразование List
в конце, а в некоторых сценариях допускает изящные приемы, такие как отложенное и / или частичное выполнение.
Кроме того, я не уверен, в чем смысл ваших .Select(q=>q)
выражений в нескольких строках инициализатора SalesEventMatchVo
, но я почти уверен, что вы можете их отрубить. Если ничего другого, вы должны Select
после Where
, так как Where
может уменьшить работу, выполняемую всеми следующими утверждениями.