Linq查询返回值不等于查询

时间:2014-05-04 02:30:39

标签: c# asp.net-mvc linq

我遇到了一个有趣的问题。我正在对返回到模型的一些项目运行linq查询。这是我可以通过的方法:

在PainCategory数据库中:

Id      Title       CompanyId
1        Type           1
2        Priority       1
3        Likelihood     1
4        Type           2
5        Priority       2
6        Likelihood     2

当我运行此查询时,我得到一个错误的比较:

 int compId = 0;
            //get project by id
            if (item.ProjectId != 0)
            {
                Userclient = new RestClient("http:www.website.com/id");
                var projReq = new RestRequest("project/{id}", Method.GET);
                projReq.AddUrlSegment("id", item.ProjectId.ToString());
                projReq.AddHeader("id", id);
                projReq.AddHeader("key", Key);
                projReq.RequestFormat = DataFormat.Json;
                var projResponse = Userclient.Execute(projReq) as RestResponse;
                ProjectDTO d = JsonConvert.DeserializeObject<ProjectDTO>(projResponse.Content);

                compId = d.CompanyId;
            }

            foreach(var i in defectsToReturn)
            {
                i.PainCategories = db.PainCategories.ToList().Where(p => p.CompanyId == compId);
            }

因此if (item.ProjectId != 0){语句只是对api进行RestSharp调用并将compId设置为1.

当我调试时,在我的foreach语句中

compId的值也是1。但i.PainCategories包含PainCategories表的所有6个元素,即使companyId的3个值设置为2.还有任何关于为什么会发生这种情况的想法?提前谢谢。

1 个答案:

答案 0 :(得分:1)

Wit似乎过滤器不适用于您的List。而不是:

i.PainCategories = db.PainCategories.ToList().Where(p => p.CompanyId == compId);

您可以在List转化之前应用过滤器。

i.PainCategories = db.PainCategories.Where(p => p.CompanyId == compId).ToList();

试一试。