强类型DataSet中的DbNull替换为linq中的String

时间:2013-10-22 21:41:26

标签: c# linq

我无法弄清楚如何用“”替换空格。因为我在此代码中收到DbNull错误:

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

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

3 个答案:

答案 0 :(得分:4)

由于这是强类型的DataTable,如果您访问可以为空的属性并且它为null,则会抛出异常(默认情况下)。

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

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

答案 1 :(得分:1)

可能是这样的:

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

我在此假设,根据提供的代码,FBSubFieldNameSelect中查询的相同“数据”的字段。

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

答案 2 :(得分:0)

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

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