2

我在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(); 
     } 

在調試過程中,我可以看到,城區人口正確,我可以看到,查詢相應內置如果Townnull。但是,當我點擊foreach語句執行linq to ef查詢時,我總是得到所有結果。我無法弄清楚我滑倒的地方。

回答

1

Where這樣的LINQ方法不會修改集合/表達式,而是總是返回一個新的。

所以,你需要將Where的結果重新分配給你的原始變量enqs

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

我們走吧!謝謝。 – paulpitchford

相關問題