我遇到了一个有趣的问题。我正在对返回到模型的一些项目运行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.
compId的值也是1。但i.PainCategories包含PainCategories表的所有6个元素,即使companyId的3个值设置为2.还有任何关于为什么会发生这种情况的想法?提前谢谢。
答案 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();
试一试。