我的Web API控制器

时间:2016-04-01 06:03:10

标签: c# asp.net visual-studio asp.net-webcontrol

我在这里变得非常绝望,因为这个代码在我遇到一些不幸的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);
    }

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

当你这样做时

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);

答案 1 :(得分:0)

以这种方式获取evt obj,

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