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 に答える