将sql行/列传递给方法

本文关键字:方法 sql | 更新日期: 2023-09-27 17:53:19

我有一些类建模我的表。许多表有一个sql server DateTime,这是一个c# DateTime在我的类。代码类似于下面的"图1"。因为我经常这样做,我想放入一个静态方法,我可以调用我的每个类。我的问题是我不知道如何在静态方法中表示参数(一个特定的sqldatreader列/行),如下面的"图2"。

图2

public static DateTime SqlDateTimeSet(????)
{
    DateTime dt;
    if (?????) // // true = null in test
        dt = DateTime.MinValue;
    else
        dt = ????;
    return dt;  
}
图1

User usr = new User();
int ordinal = <nullable DateTime column>;
if (dr.IsDBNull(ordinal))
    usr.DisableDate = DateTime.MinValue;
else
    usr.DisableDate = dr.GetDateTime(ordinal);

将sql行/列传递给方法

您应该能够将SQL日期/时间转换为这样的。net DateTime(其中传递的值是来自DataReader的东西,如myDataReader["myDateTime"]:

public static DateTime SqlDateTimeSet(object drValue)
{
    DateTime? dt;
    dt = drValue as DateTime?;
    return dt.GetValueOrDefault();
}

这是一个通用的扩展方法的例子。

  public static class DataRowExtensions
  {
    public static T FieldOrDefault<T>(this DataRow row, string columnName)
    {
      return row.IsNull(columnName) ? default(T) : row.Field<T>(columnName);
    }
  }