Ну, для начала вы, вероятно, имели в виду record.event_id
вместо result.event_id
.Ваш код был бы более понятным, если бы вы изменили result
на results
, учитывая, что это последовательность результатов.
Однако это только перенесет проблему на один этап.Database.Query
возвращает IEnumerable<object>
, поэтому тип record
будет object
... и object
также не имеет члена с именем event_id
.
Документация для Database.Query
довольно расплывчата - возможно, она возвращает динамические объекты.Попробуйте это:
foreach (dynamic record in result)
{
CalendarEvent cevent = new CalendarEvent();
cevent.id = record.event_id;
}
РЕДАКТИРОВАТЬ: Если record.event_id
работает даже без преобразования в dynamic
, то возможно, что эффективный тип результата будет IEnumerable<dynamic>
и MSDN просто не очень полезен.
Однако в вашем коде все еще есть проблема: плохая идея включать значения параметров непосредственно в SQL следующим образом:
- Смешивать код и данные - плохая идея с точки зрения чистоты кода
- Необходимо убедиться, что даты, числа и т. Д. Имеют правильный формат
- Это открывает для вас атаки с использованием SQL-инъекций.
Вместо этого вы должны использовать параметризованный запрос , например:
var result = db.Query(
"SELECT event_id, description, title, event_start, event_end FROM event " +
"where event_start >= ? AND event_end <= ?",
start, end);