在下面的代码中,我试图从List中获取null,空字符串和源组件。我还没有测试过这段代码,但我的直觉告诉我,当过滤List for source和空字符串时,如果它来自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对象的附件属性。它基本上是对象的另一个属性。
答案 0 :(得分:1)
基于“我试图从列表中获取null,空字符串和源组件”我假设您需要一个包含这3个特定值的列表。
var allItems = itemsList
.Where(s => string.IsNullOrEmpty(s[Constants.ProductSource])
|| s[Constants.ProductSource] == source)
.ToList()
答案 1 :(得分:0)
有没有理由你不能将表达式合二为一?我还要添加一个检查字符中是否存在密钥:
List<LineItem> NALineItems = itemsList.Where(s =>
s.ContainsKey(Constants.ProductSource) && (
String.IsNullOrEmpty(s[Constants.ProductSource]) ||
s[Constants.ProductSource] == source))
.ToList();