c# - 避免数据表列上的 LINQ 表达式中出现 NullReferenceException

标签 c# linq

我的数据表“文章”中陷入了空值。使用 LINQ 获取文章列表适用于 ArticleId 列,但对于“ArticleVariations”列,空值简直要了我的命。

var result = this.articles.AsEnumerable().Where(r =>r.Field<String>("ArticleId").Equals(artNo)); // works. no nulls there ;)

var result = this.articles.AsEnumerable().Where(r =>r.Field<String>("ArticleVariations").Equals(artNo)); // stuck with nulls here

如果列包含空值,我会收到 NullReferenceException,我可以以某种方式避免这种情况吗?是否可以合并两个表达式?

最佳答案

您可以使用null-conditional和空合并运算符:

var result = this.articles.AsEnumerable()
                 .Where(r =>r.Field<String>("ArticleVariations")?.Equals(artNo) ?? false);

关于c# - 避免数据表列上的 LINQ 表达式中出现 NullReferenceException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134532/

相关文章:

c# - 如何使用 List<T>() 隐藏私有(private)字段?

c# - 可以替代链式开关/转到的设计模式?

c# - LINQ 比较两个列表 - 添加新的、删除旧的、保留相同的列表

LINQ2SQL - 当我想要内部连接时发出交叉连接

c# - NCalc Evaluate() 给出错误答案

c# - GCHandle : when to use GCHandleType. 正常吗?

c# - Eval函数是C#

c# - 使用没有 foreach 的 LINQ 按类别划分产品列表

c# - 如何使用多个条件和 LINQ 过滤列表中的数据?

c# - 两个 List<FileInfo> 之间的区别