检查 lambda 表达式中的空值

本文关键字:空值 表达式 lambda 检查 | 更新日期: 2023-09-27 18:34:18

在下面的代码中,我试图从列表中获取空,空字符串和源组件。我还没有测试过这段代码,但我的直觉告诉我,如果它来自空值,它在过滤 List 中的源和空字符串时会中断。

我尝试先提取空值,但我仍在过滤基本列表。如何重写此代码以最佳方式完成我尝试执行的操作?

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] 是 ECommerce PurchaseOrder 对象的附件属性Microsoft。它基本上是一个对象的另一个属性。

检查 lambda 表达式中的空值

基于">我正在尝试从列表中获取空、空字符串和源组件",我假设您的意思是您想要一个包含这 3 个特定值的列表。

var allItems = itemsList
                 .Where(s => string.IsNullOrEmpty(s[Constants.ProductSource])
                             || s[Constants.ProductSource] == source)
                 .ToList()
有什么

理由不能将表达式合并为一个表达式吗? 我还要检查该键是否存在于字典中:

List<LineItem> NALineItems = itemsList.Where(s =>
    s.ContainsKey(Constants.ProductSource) && (
        String.IsNullOrEmpty(s[Constants.ProductSource]) ||
        s[Constants.ProductSource] == source))
    .ToList();