-6

以下のコードでは、リストから null、空の文字列、およびソース コンポーネントを取得しようとしています。このコードはまだテストしていませんが、直感的には、ソースのリストと空の文字列をフィルタリングすると、null 値が来ると壊れることがわかります。

最初に null 値を抽出しようとしましたが、まだベース リストをフィルタリングしています。このコードを書き直して、私がやろうとしていることを最善の方法で達成するにはどうすればよいでしょうか?

List<LineItem> nullList=itemsList.Where(s => s[Constants.ProductSource] == null)
                                 .ToList();

NALineItems = itemsList.Where(s => s[Constants.ProductSource] == source 
                                   || s[Constants.ProductSource] == String.Empty)
                       .ToList();

NALineItems = nullList.Union(NALineItems).ToList(); 

s[Constants.ProductSource] は、Microsoft ECommerce PurchaseOrder オブジェクトへの添付プロパティです。基本的にオブジェクトの別のプロパティです。

4

2 に答える 2

1

「リストからnull、空の文字列、およびソースコンポーネントを取得しようとしています」に基づいて、これら3つの特定の値を持つリストが必要だと思います。

var allItems = itemsList
                 .Where(s => string.IsNullOrEmpty(s[Constants.ProductSource])
                             || s[Constants.ProductSource] == source)
                 .ToList()
于 2012-05-14T18:06:11.297 に答える
0

式を 1 つにまとめられない理由はありますか? キーが辞書に存在することのチェックも追加します。

List<LineItem> NALineItems = itemsList.Where(s =>
    s.ContainsKey(Constants.ProductSource) && (
        String.IsNullOrEmpty(s[Constants.ProductSource]) ||
        s[Constants.ProductSource] == source))
    .ToList();
于 2012-05-14T18:06:03.087 に答える