-6

在下面的代码中,我试图从 List 中获取 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 电子商务 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

您是否有理由不能将表达式组合成一个?我还将添加一个检查该键是否存在于字典中:

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 回答