强类型数据集中的 DbNull 在 linq 中替换为字符串

本文关键字:linq 替换 字符串 DbNull 数据 数据集 集中 强类型 | 更新日期: 2023-09-27 18:36:31

我不知道如何用"替换空格。因为我在此代码中收到 DbNull 错误:

var subFields = permCollection
    .Where(item=>fields.Contains(item.FBFieldName))
    .Select(a=>a.FBSubFieldName)
    .ToList();

FBSubFieldName 的某些值为空,有些则不是。有什么想法吗?

强类型数据集中的 DbNull 在 linq 中替换为字符串

由于这是一个强类型DataTable如果您访问可为空且为空的属性,则会引发异常(默认情况下)。

您有一个自动生成的 bool 属性,指示它是否为 null,请将其与条件运算符 (?) 一起使用:

var subFields = permCollection
    .Where(item  => fields.Contains(item.FBFieldName))
    .Select(item => item.IsFBSubFieldNameNull ? "" : item.FBSubFieldName)
    .ToList();
可能是

这样的:

var subFields = permCollection
    .Where(item=>item.FBSubFieldName!=null && fields.Contains(item.FBFieldName) )
    .Select(a=>a.FBSubFieldName)
    .ToList();

我在这里假设,根据提供的代码,FBSubFieldNameSelect中查询的相同"数据"的字段。

如果这不是您要要求的,请澄清。

你需要在字段上测试DBNull。尝试让初学者

var subFields = permCollection
.Where(item=>!(item.FBSubFieldName is System.DBNull) && fields.Contains(item.FBFieldName) )
.Select(a=>a.FBSubFieldName)
.ToList();