Entity framework 为什么此查询总是返回所有记录?

Entity framework 为什么此查询总是返回所有记录?,entity-framework,wcf-ria-services,visual-studio-lightswitch,Entity Framework,Wcf Ria Services,Visual Studio Lightswitch,我正在Lightswitch项目中使用WCF RIA来创建一些查询结果。不管结果如何,此查询都会返回所有结果。我无法让它根据传递的参数(string-Town)过滤记录 publicIQueryable测试查询(字符串) { List riaenqs=新列表(); var enqs=this.Context.clientequiries .包括(“客户”) .包括(“客户镇”) .OrderBy(enq=>enq.Id); 如果(城镇!=null) { enqs.Where(enq=>enq.C

我正在Lightswitch项目中使用WCF RIA来创建一些查询结果。不管结果如何,此查询都会返回所有结果。我无法让它根据传递的参数(
string-Town
)过滤记录

publicIQueryable测试查询(字符串)
{
List riaenqs=新列表();
var enqs=this.Context.clientequiries
.包括(“客户”)
.包括(“客户镇”)
.OrderBy(enq=>enq.Id);
如果(城镇!=null)
{
enqs.Where(enq=>enq.Client.Town.TownName==Town);
}
foreach(enqs.ToList()中的客户查询项)
{
查询enq=新查询();
enq.Id=项目Id;
enq.ClientName=item.Client.FirstName+“”+item.Client.name;
enq.Town=item.Client.Town!=null?item.Client.Town.TownName:null;
riaenqs.Add(enq);
}
返回riaenqs.AsQueryable();
}

在调试期间,我可以看到Town已正确填充,并且如果
Town
不是
null
,我可以看到相应地构建了查询。然而,当我点击执行linq to ef查询的
foreach
语句时,我总是得到所有结果。我只是不知道我在哪里出错。

where
这样的LINQ方法不会修改集合/表达式,而是总是返回一个新的集合/表达式

因此,您需要将
Where
的结果重新分配给原始变量
enqs

if (Town != null)
{
    enqs = enqs.Where(enq => enq.Client.Town.TownName == Town);
}

好了!非常感谢。
if (Town != null)
{
    enqs = enqs.Where(enq => enq.Client.Town.TownName == Town);
}