C# 如何扩展DataRow类
我想扩展System.Data.DataRow类,因此我编写了以下代码(并在我的类中使用关键字添加了C# 如何扩展DataRow类,c#,extension-methods,nullable,datarow,C#,Extension Methods,Nullable,Datarow,我想扩展System.Data.DataRow类,因此我编写了以下代码(并在我的类中使用关键字添加了) 但是,当我尝试以下代码时,ToNullableDate不会在Intellisense中显示: DataRow d = new DataRow(); d["Column"].ToNullableDate(); // ToNullableDate does not show up 我的扩展方法语句中是否缺少任何内容?或者我应该创建一个新类并从DataRow类继承吗 谢谢扩展方法将关闭,d,而不是
)
但是,当我尝试以下代码时,ToNullableDate
不会在Intellisense中显示:
DataRow d = new DataRow();
d["Column"].ToNullableDate(); // ToNullableDate does not show up
我的扩展方法语句中是否缺少任何内容?或者我应该创建一个新类并从DataRow类继承吗
谢谢扩展方法将关闭,d
,而不是关闭索引器
仅供参考,您可以这样做:
DataRow d = new DataRow();
d["Column"] as DateTime?;
扩展方法将关闭,d
,而不是关闭索引器
仅供参考,您可以这样做:
DataRow d = new DataRow();
d["Column"] as DateTime?;
代码中是否有使用MyExtension的?此外,扩展名位于DataRow上,即d,但您正在d[“Column”]上查找它
从您的评论来看,该值似乎为null,您需要对此进行测试,而不是创建扩展
object value = d["Column"];
if (value == DBNull.Value)
// do something
else
// do something else
如果确实需要扩展方法,一个选项是在方法中传递列:
namespace MyExtension
{
public static class DataRowExt
{
public static string ToNullableDate(this DataRow dr, string Column)
{ return something;}
}
}
然后像这样使用它:
d.ToNullableDate("Column");
代码中是否有使用MyExtension的?此外,扩展名位于DataRow上,即d,但您正在d[“Column”]上查找它
从您的评论来看,该值似乎为null,您需要对此进行测试,而不是创建扩展
object value = d["Column"];
if (value == DBNull.Value)
// do something
else
// do something else
如果确实需要扩展方法,一个选项是在方法中传递列:
namespace MyExtension
{
public static class DataRowExt
{
public static string ToNullableDate(this DataRow dr, string Column)
{ return something;}
}
}
然后像这样使用它:
d.ToNullableDate("Column");
好的,那么我可以扩展索引器吗?@Devmonster-它返回对象
,但我不建议扩展它。您是否建议我继承DataRow类?实际上,我的问题是外部代码返回的datetime值为null。我的朋友说,将我的变量声明为DateTime?
仍然会返回异常“从DBNull转换为其他类型”。有什么推荐的解决方法吗?我已经用作为操作符来处理了。它适合我。你能在Linq语句中使用它吗?好的,那么我可以扩展索引器吗?@Devmonster-它返回对象
,但我不建议扩展它。Yikes。您是否建议我继承DataRow类?实际上,我的问题是外部代码返回的datetime值为null。我的朋友说,将我的变量声明为DateTime?
仍然会返回异常“从DBNull转换为其他类型”。有什么推荐的解决方法吗?我已经用作为操作符来处理了。它对我很有用。你能在Linq语句中使用它吗?是的,我的类中有using
关键字(在我的帖子中提到)。我想我的问题是如何扩展d[“列]部分。是的,这正是我想要做的。但是,这是Linq语句的一部分。所以我需要检查datarow值是否为null。我还没有Linq方面的经验,我不知道是否有办法将if
语句添加到Linq赋值中谢谢!这是我在发布问题之前做的。这也很有效,b丹尼尔的建议也很有效。是的,我在课堂上使用了关键字(在我的帖子中提到)。我想我的问题是如何扩展d[“Column]部分。是的,这正是我想要做的。但是,这是Linq声明的一部分。所以我需要检查datarow值是否为null。我还没有Linq方面的经验,我不知道是否有办法在Linq分配中添加if
语句谢谢!这就是我在发布问题前做的。这也行,但丹尼尔的建议也行。