我在Lightswitch项目中使用WCF RIA创建一些查询结果。该查询将带回所有结果。我无法使其根据传递的参数(string Town
)过滤记录。
public IQueryable<Enquiries> TestQuery(string Town)
{
List<Enquiries> riaenqs = new List<Enquiries>();
var enqs = this.Context.ClientEnquiries
.Include("Client")
.Include("Client.Town")
.OrderBy(enq => enq.Id);
if (Town != null)
{
enqs.Where(enq => enq.Client.Town.TownName == Town);
}
foreach (ClientEnquiry item in enqs.ToList())
{
Enquiries enq = new Enquiries();
enq.Id = item.Id;
enq.ClientName = item.Client.FirstName + " " + item.Client.Surname;
enq.Town = item.Client.Town != null ? item.Client.Town.TownName : null;
riaenqs.Add(enq);
}
return riaenqs.AsQueryable();
}
在调试过程中,我可以看到该镇已正确填充,并且如果Town
没有,则可以看到相应地构建了查询null
。但是,当我点击foreach
执行linq to ef查询的语句时,我总是会得到所有结果。我只是不知道我要滑到哪里。
像LINQ这样的LINQ方法Where
不会修改收集/表达式,但总是返回一个新的。
因此,您需要将的结果重新分配Where
给您的原始变量enqs
:
if (Town != null)
{
enqs = enqs.Where(enq => enq.Client.Town.TownName == Town);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句