1

我正在尝试使用 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”的定义,并且找不到接受“System.Linq.IQueryable”类型的第一个参数的扩展方法“Where”(您是否缺少 using 指令或装配参考?)

4

1 回答 1

1

假设您实际上使用的是自定义集合,您不是在寻找 IQueryable,而是在寻找 IEnumerable,并且应该可以直接使用:

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

(当然前提是using System.Linq您的代码文件中有一个)。

于 2012-04-17T20:20:25.217 回答