.net 覆盖数据行';允许DBNULLS的s.Item属性
我发现我编写的大多数程序通常包含.net 覆盖数据行';允许DBNULLS的s.Item属性,.net,vb.net,.net,Vb.net,我发现我编写的大多数程序通常包含数据表,我经常通过选择数据行(通过循环或Linq)从表中提取数据,并通过编写以下内容来分配变量值: MyVar = ThisDataRow.Item("itm") 这非常有效,除非特定项是DBNull,在这种情况下会引发错误 现在,一个简单的修复方法是编写一个简单的函数/if语句,如果项的值为DBNull,则返回值或0或”,但我想知道以某种方式继承DataRow对象并创建一个新属性ItemOrEmpty是否有意义(或者你想叫它什么)不会引发错误并返回正确的值 这
数据表
,我经常通过选择数据行
(通过循环或Linq)从表中提取数据,并通过编写以下内容来分配变量值:
MyVar = ThisDataRow.Item("itm")
这非常有效,除非特定项是DBNull
,在这种情况下会引发错误
现在,一个简单的修复方法是编写一个简单的函数/if语句,如果项的值为DBNull
,则返回值或0
或”
,但我想知道以某种方式继承DataRow
对象并创建一个新属性ItemOrEmpty
是否有意义(或者你想叫它什么)不会引发错误并返回正确的值
这将允许我使用:
MyVar = ThisDataRow.Item("itm")
或
这取决于我是否要捕获null
我的问题是:
DataRow
对象而不是创建一个新对象,但我不知道如何做到这一点DataRow.Item
谢谢!!!为了完整起见-对于任何遇到这个问题的人-我最终的做法是接受@Tim的建议并编写我自己的扩展方法。 请注意,这是我写过的第一篇文章,所以请告诉我是否有更好的写作方法
''' <summary>
''' Returns the item from a DataRow and, if it is DBNull, it returns a specified default value
''' </summary>
''' <param name="ColumnName">The name of the Column in the datarow we want the value from.</param>
''' <param name="DefaultValue">The default value for that column if it is NULL.</param>
<System.Runtime.CompilerServices.Extension()> _
Public Function ItemOrEmpty(Of T)(ByVal dr As DataRow, ByVal ColumnName As String, ByVal DefaultValue As T) As T
If dr.Item(ColumnName) Is Nothing Or IsDBNull(dr.Item(ColumnName)) Then
Return DefaultValue
Else
Return dr.Item(ColumnName)
End If
End Function
“”
''从DataRow返回项,如果为DBNull,则返回指定的默认值
'''
''数据行中要从中获取值的列的名称。
''该列的默认值(如果为空)。
_
公共函数ItemOrEmpty(Of T)(ByVal dr作为DataRow,ByVal ColumnName作为String,ByVal DefaultValue作为T)作为T
如果dr.Item(ColumnName)为Nothing或IsDBNull(dr.Item(ColumnName)),则
返回默认值
其他的
返回dr.Item(ColumnName)
如果结束
端函数
希望这能帮助其他人…你考虑过扩展方法吗?蒂姆,这正是我想要的!!-谢谢!如果你想将其作为解决方案发布,我会给你分数。谢谢!!+1为你发布解决方案供其他人查看。我很高兴我的评论有帮助:)我没有把它作为一个解决方案发布,因为它不是-它更像是把一个建议扔到立方体墙上给一个开发伙伴。。。。对我来说,这远远不止于此——对于一个从未处理过扩展方法的人来说,你让我看到了它们的可能性谢谢你,蒂姆
''' <summary>
''' Returns the item from a DataRow and, if it is DBNull, it returns a specified default value
''' </summary>
''' <param name="ColumnName">The name of the Column in the datarow we want the value from.</param>
''' <param name="DefaultValue">The default value for that column if it is NULL.</param>
<System.Runtime.CompilerServices.Extension()> _
Public Function ItemOrEmpty(Of T)(ByVal dr As DataRow, ByVal ColumnName As String, ByVal DefaultValue As T) As T
If dr.Item(ColumnName) Is Nothing Or IsDBNull(dr.Item(ColumnName)) Then
Return DefaultValue
Else
Return dr.Item(ColumnName)
End If
End Function