我有一个数据表,并为bit数据类型列添加了表达式。因此,如果从DB获得0,则将其替换为“ False”,对于1,我将其替换为“ True”。现在我的问题是,该字段也包含NULL。我已经使用了IIF,所以我的支票就像:
Dim expression As String = String.Format("IIF({0}=0, {1}, {2})", colName, Boolean.FalseString, Boolean.TrueString)
因此,对于NULL,将其替换为True字符串,有什么方法可以处理NULL并将其替换为“”或空白
答案 0 :(得分:1)
Dim expression As String = String.Format("IIF({0}=0, {1}, IIF({0}=1, {2}, ''))",
colName,
Boolean.FalseString,
Boolean.TrueString)
答案 1 :(得分:0)
将结果投射为可为空的Boolean
并调用.ToString()
。
var result = table.Field(Of Boolean?)("columnName").ToString()
将此实例的值转换为其等效的字符串 表示形式(“ True”或“ False”)。
如果值为DbNull
可为Boolean
可为空,则将没有值,并且将返回空字符串。
当前Nullable对象的值的文本表示形式 如果HasValue属性为true,则为空字符串(“”),如果 HasValue属性为false。
示例
Dim table As New DataTable()
table.Columns.Add("IsTest", GetType(Boolean))
Dim row0 = table.NewRow()
row0.SetField("IsTest", True)
table.Rows.Add(row0)
Dim row1 = table.NewRow()
row1.SetField("IsTest", DBNull.Value)
table.Rows.Add(row1)
Dim actual = table.AsEnumerable().
Select(Function(row) row.Field(Of Boolean?)("test")).
Select(Function(value) value.ToString()).
ToList()
Dim expected As New List(Of String) From { "True", "" }
actual.Should().BeEquivalentTo(expected) ' Pass
如果您不在乎列的实际类型,则可以简单地调用ToString()
来完成此操作。
row("IsTest").ToString()
如果在某些控件中显示数据,则可能不需要执行任何操作,因为在大多数情况下,默认情况下会调用.ToString()
。