2013-05-04 46 views
-1

我搜索了很多,但無法爲我的問題找到正確的解決方案。lambda表達式中類似語法的條款

我試圖在SQL非常基本的,但不知道如何使它在這裏lambda表達式的工作是什麼我嘗試做的事:

FilteredInOrderquery = mycontext.Websites.OrderBy(website.currentOrderBy + " " + website.sortOrder).Where(
     x => (website.websiteFilterList.Contains(x.site.ToString())) 

      && 
      (website.cityFilterList.Contains(x.city.ToString())) 

      ).Select(x => new WebsiteData(
       x.RowID, 
       x.pagetype, 
       x.site, 
       x.creationdate ?? DateTime.Today, 
       x.expirationdate ?? DateTime.Today, 
       x.domainregistrar, 
       x.pin, 
       x.area, 
       x.city, 
      ((x.expirationdate ?? DateTime.Today) - DateTime.Today).Days.ToString() + " days")); 

websitefilterList和cityFilterlist既可以是空的,以及可以包含多個項目。

的一點是,我應該能夠得到記錄,即使我通過任何列表爲空(如果列表爲空,那麼我應該得到該列的所有記錄)

,如果IM同時傳遞清單,應該出現多個條目。只有與這些條目匹配的記錄纔會出現。

目前沒有發生這種情況,當我的任何清單爲空時,我收到錯誤消息。雖然如果任何列表是空的,那麼我必須得到所有的記錄。這是非常普遍的要求,但我找不到解決方案。

回答

0
Where(x => 
(!website.websiteFilterList.Any() || website.websiteFilterList.Contains(x.site.ToString())) 
&& 
(!website.cityFilterList.Any() || website.cityFilterList.Contains(x.city.ToString()))) 
+0

不工作。在這種情況下沒有結果 – Sangeeta 2013-05-04 15:21:52

+0

是的,它的工作。雖然我花了很多時間。謝謝 – Sangeeta 2013-05-05 04:59:51