【发布时间】:2012-05-14 17:59:42
【问题描述】:
在下面的代码中,我试图从列表中获取 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 对象的附件属性。它基本上是对象的另一个属性。
【问题讨论】:
-
“我还没有测试过这段代码,但我的直觉告诉我它会崩溃”这意味着你过早地问了这个问题。
-
你知道 String.IsNullOrEmpty 吗?
-
itemsList是否包含数组?这是什么s[Constants.ProductSource]? -
我们应该知道我们的代码在这些情况下是否会在没有先测试的情况下中断。这部分是我想要完成的。
-
我不同意——如果你已经有一些代码尝试一下,写一些测试(写你认为可能会先中断的测试!)——它有价值,下次你会遇到类似的事情,你会知道会发生什么。