簡體   English   中英

Linq PredicateBuilder - 多個OR

[英]Linq PredicateBuilder - Multiple ORs

我正在嘗試使用PredicateBuilder,如下所述 - http://www.albahari.com/nutshell/predicatebuilder.aspx

以下代碼

var predicate = PredicateBuilder.False<StreetDTO>();

        predicate = predicate.Or(p => p.Locality.Contains(criteria.Locality));
        predicate = predicate.Or(p => p.Name.Contains(criteria.Name));
        predicate = predicate.Or(p => p.Town.Contains(criteria.Town));

        List<StreetDTO> streetData = StreetData.Instance();

        var streetList = from street in streetData.Where(predicate)
                         select street;

根據這個例子,據我所知,這應該有效

var newKids  = Product.ContainsInDescription ("BlackBerry", "iPhone");

var classics = Product.ContainsInDescription ("Nokia", "Ericsson")
                      .And (Product.IsSelling());
var query =
  from p in Data.Products.Where (newKids.Or (classics))
  select p;

但我得到的只是

錯誤1無法從用法中推斷出方法'System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,System.Func)'的類型參數。 嘗試顯式指定類型參數。

我正試圖在LINQ'在職'獲得一些理解,所以如果這是一個簡單的問題,請道歉。

啊; 你的列表使用IEnumerable<T>擴展方法(而不是IQueryable<T> ) - 嘗試:

var streetList = from street in streetData.AsQueryable().Where(predicate)
                 select street;

嘗試編譯謂詞:

var streetList = from street in streetData.Where(predicate.Compile())
                 select street;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM