在自定义集合上使用IQueryable过滤

时间:2012-04-17 20:14:59

标签: linq

我正在尝试使用LINQ替换以下代码..

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指令或汇编引用?)

1 个答案:

答案 0 :(得分:1)

假设您实际上正在使用自定义集合而不是在寻找IQueryable,那么您正在寻找一个IEnumerable,它应该可以直接使用:

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

(当然,您的代码文件中有using System.Linq。)