2012-04-17 115 views
1

我試圖使用LINQ將以下代碼使用IQueryable的過濾..上自定義集合

public List<LineItem> GetEULineItems(PurchaseOrder p) 
    { 
     List<LineItem> EULineItems = new List<LineItem>(); 

      foreach (LineItem li in p.OrderForms[0].LineItems) 
      { 
       if (li[Constants.ProductSource] != null) 
       { 
        if (li[Constants.ProductSource].ToString().Trim() == "EU") 
        { 
         EULineItems.Add(li); 
        } 
       } 
      } 

     return EULineItems; 
    } 

我試過,但我剛開例外..

IQueryable<LineItem> EULineItems = p.OrderForms[0].LineItems.AsQueryable().Where(s => s.ProductSource == "EU"); 

例外: 'System.Linq.IQueryable'不包含'Where'的定義,並且沒有擴展方法'Where'接受類型'System.Linq.IQueryable'的第一個參數可以被找到(你是否缺少using指令或程序集引用?)

+0

你有什麼特別的理由想在這裏使用Queryable嗎? – 2012-04-17 20:20:26

回答

1

使用你是不是在找一個IQueryable自定義集合假設你是在事實上,你正在尋找一個IEnumerable,這應該工作的權利開箱:

IEnumerable<LineItem> EULineItems = p.OrderForms[0] 
            .LineItems 
            .Where(s => s.ProductSource == "EU"); 

(前提當然是你有代碼文件中的using System.Linq)。