2011-04-26 25 views
0

我有一些類爲我的表建模。許多表都有一個sql server DateTime,它是我的類中的c#DateTime。代碼看起來像下面的「圖1」。正如我經常這樣做,我想要一個靜態方法,我可以打電話給我的每一個類。我的問題是我不知道如何在靜態方法中表示參數(特定的sqldatreader列/行),「圖2」。傳遞SQL行/列到方法

圖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); 

回答

1

您應該能夠到SQL日期/時間轉換爲.NET DateTime所示(這裏的價值傳遞是從什麼DataReader like myDataReader["myDateTime"]

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

這是考試可以工作的普通擴展方法。

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