2012-04-17 75 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)。