事件 属性 未在我的 Web API 控制器中被识别

Event property not being recognized in my Web API Controller

我在这里变得非常绝望,因为这段代码在我遇到一些不幸的 git 问题并且不得不清除我的项目并再次结帐之前就可以工作。出于某种原因,我的 IQueryable 对象不再允许我引用属性。在我下面的代码中,evt.id 应该是有效的,但 id 在 Visual Studio 中不被识别为 evt 的 属性。另外,我应该提一下,我不仅不能访问 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);
    }

如有任何帮助,我们将不胜感激。

当你

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

您的 evt 将是一个 IEnumerable<T>,其中 Tdb.patient_event 中的任何内容。也就是说,您的 evt 是事件的集合,而该集合没有 id 属性。在进入 id 属性 之前,您必须选择一个特定的事件。例如

var myEvent = evt.First();
Console.WriteLine(myEvent.id);

通过这种方式获取 evt 对象,

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