Свойство события не распознается в моем контроллере Web API

Я впадаю в отчаяние, так как этот код работал до того, как у меня возникли неприятные проблемы с git, и мне пришлось стереть мой проект и снова оформить заказ. По некоторым причинам мои объекты IQueryable больше не позволяют мне ссылаться на свойства. В моем коде ниже evt.id должен быть допустимым, но идентификатор не распознается как свойство evt в Visual Studio. Кроме того, я должен отметить, что я не могу получить доступ не только к evt, но и к любым свойствам, которые принадлежат цели. Что-то, что я пропустил при перекодировании этой части моего контроллера?

    public HttpResponseMessage GetTodaysPatientGoals(int id)
    {
        var evt = db.patient_event.Where(e => (e.patient_id == id) && (e.date == DateTime.Today));

        //evt.id is not recognized here either
        if(evt != null)
        {
            //evt.id is not recognized as a property of evt here
            //also cant access properties of goal either 
            var goal = db.patient_goals.Where(g => (g.patient_id == id) && (g.event_id == evt.id)).Select(row => (new { row.id, row.completed, row.goal }));
            return Request.CreateResponse(HttpStatusCode.OK, goal);
        }

        return Request.CreateResponse(HttpStatusCode.NoContent);
    }

Любая помощь будет принята с благодарностью.

2 ответа

Решение

Получить evt obj таким образом,

var evt = db.patient_event.Where(e => (e.patient_id == id) && (e.date == DateTime.Today)).FirstOrDefault();

Когда вы делаете

var evt = db.patient_event.Where(e => (e.patient_id == id) && (e.date == DateTime.Today));

ваш evt будет IEnumerable<T>, где T это то, что в db.patient_event, То есть твой evt это коллекция событий, и эта коллекция не имеет id имущество. Вам нужно будет выбрать конкретное событие, прежде чем вы сможете добраться до id имущество. Например

var myEvent = evt.First();
Console.WriteLine(myEvent.id);
Другие вопросы по тегам