मैंने देखा है कि this thread स्टैक ओवरफ़्लो पर डीबीएनयूएल और नालीबल प्रकारों के बीच कनवर्ट करने के बारे में है लेकिन मैं अभी भी उलझन में हूं। मैं दिनांक समय के लिए नल प्रकार से निपटने के लिए कुछ हैक कोड के साथ इस तरह कोड लिखा और ints है कि मैं नीचे लेकिन it'sa गड़बड़ दिखाई देगा और मैं Nullable प्रकार का उपयोग करना चाहते है:नलबल प्रकार, डीबीएनयूल्स और डेटा पंक्तियों के साथ समस्या
DataTable dt = ds.Tables[0];
List<RON> list = (from dr in dt.AsEnumerable()
select new RON
{
RONId = dr[0].ToString(),
StaffNumber = dr[1].ToString(),
CheckInDate = GetCheckInDate(dr[2]),
NonMissionIndicator = dr[3].ToString(),
Comments = dr[4].ToString(),
NonComplyIndicator = dr[5].ToString(),
LOAirport = dr[6].ToString(),
RONAirport = dr[7].ToString(),
PropertyId = GetPropertyId(dr[8]),
PropertyChain = dr[9].ToString(),
PropertyName = dr[10].ToString(),
PropertyStreet = dr[11].ToString(),
PropertyStreet2 = dr[12].ToString(),
PropertyCity = dr[13].ToString(),
PropertyState = dr[14].ToString(),
PropertyPostalCode = dr[15].ToString(),
PropertyPhone = dr[16].ToString(),
FAX = dr[17].ToString(),
PropertyCountry = dr[18].ToString(),
PropertyLongitude = GetPropertyLongitude(dr[19]),
PropertyLatitude = GetPropertyLatitude(dr[20]),
PropertyAirport = dr[21].ToString(),
ReportedBy = dr[22].ToString(),
ReportedDTS= GetReportedByDate(dr[23]),
CanceledBy = dr[24].ToString(),
CanceledDTS = GetCanceledByDate(dr[25])
}).ToList();
return list;
}
//TODO: Change Defaukt date
private static DateTime GetCheckInDate(object checkInDate)
{
return checkInDate == DBNull.Value ? new DateTime(2000, 1, 1, 00, 00, 00) : Convert.ToDateTime(checkInDate);
}
//TODO: Change Defaukt date
private static DateTime GetReportedByDate(object reportedByDate)
{
return reportedByDate == DBNull.Value ? new DateTime(2000, 1, 1, 00, 00, 00) : Convert.ToDateTime(reportedByDate);
}
//TODO: Change Defaukt date
private static DateTime GetCanceledByDate(object canceledByDate)
{
return canceledByDate == DBNull.Value ? new DateTime(2000, 1, 1, 00, 00, 00) : Convert.ToDateTime(canceledByDate);
}
private static Int32 GetPropertyId(object propertyId)
{
return propertyId == DBNull.Value ? 0 : Convert.ToInt32(propertyId);
}
private static double GetPropertyLongitude(object propertyLongitude)
{
return propertyLongitude == DBNull.Value ? 0.0 : Convert.ToDouble(propertyLongitude);
}
private static double GetPropertyLatitude(object propertyLatitude)
{
return propertyLatitude == DBNull.Value ? 0.0 : Convert.ToDouble(propertyLatitude);
}
रॉन अब के रूप में परिभाषित किया गया है:
public class RON
{
public string RONId { get; set; }
public string StaffNumber { get; set; }
public DateTime CheckInDate { get; set; }
public string NonMissionIndicator { get; set; }
public string NonComplyIndicator { get; set; }
public string LOAirport { get; set; }
public string RONAirport { get; set; }
public int PropertyId { get; set; }
public string PropertyChain { get; set; }
public string PropertyName { get; set; }
public string PropertyStreet { get; set; }
public string PropertyStreet2 { get; set; }
public string PropertyCity { get; set; }
public string PropertyState { get; set; }
public string PropertyPostalCode { get; set; }
public string PropertyCountry { get; set; }
public string PropertyPhone { get; set; }
public string FAX { get; set; }
public double PropertyLongitude { get; set; }
public double PropertyLatitude { get; set; }
public string PropertyAirport { get; set; }
public string ReportedBy { get; set; }
public DateTime ReportedDTS { get; set; }
public string CanceledBy { get; set; }
public DateTime CanceledDTS { get; set; }
public string Comments { get; set; }
डेटाबेस पुरुष मुझसे कहता है कि इस ओरेकल से वापसी डेटासेट/कर्सर में है:
RON_ID NOT NULL VARCHAR2(40)
STAFF_NUM NOT NULL VARCHAR2(12)
CHECKIN_DATE NOT NULL DATE
NONMISSION_IND NOT NULL VARCHAR2(1)
COMMENTS VARCHAR2(4000)
NONCOMPLY_IND VARCHAR2(4000)
PROPERTY_ID NOT NULL NUMBER(38)
PROPERTY_CHAIN VARCHAR2(2)
PROPERTY_NAME VARCHAR2(255)
RON_AIRPORT NOT NULL VARCHAR2(3)
PROPERTY_STREET VARCHAR2(255)
PROPERTY_STREET2 VARCHAR2(255)
PROPERTY_CITY VARCHAR2(255)
PROPERTY_STATE VARCHAR2(3)
PROPERTY_POSTALCODE VARCHAR2(255)
PROPERTY_PHONE VARCHAR2(20)
PROPERTY_FAX VARCHAR2(20)
PROPERTY_COUNTRY VARCHAR2(2)
PROPERTY_LONGITUDE NUMBER
PROPERTY_LATITUDE NUMBER
PROPERTY_AIRPORT VARCHAR2(3)
REPORTED_BY VARCHAR2(50)
REPORTED_DTS NOT NULL DATE
CANCELED_BY VARCHAR2(50)
CANCELED_DTS DATE
मैं कैसे Nullable प्रकार के साथ रॉन घोषणा कर सकते हैं और मैं नू साथ संचालन कैसे कर सकते हैं लेटेबल तिथियां और ऐसे? तारों की जांच की जानी चाहिए?
धन्यवाद! तो डेटटाइम? nullableDate = dataRow।फ़ील्ड ("कॉलमनाम"); मेरे उदाहरण में यह क्या होगा? –
मेरा उदाहरण अपडेट किया गया .... – Dismissile
मुझे "निर्दिष्ट कास्ट मान्य नहीं है।"} [System.InvalidCastException]: {"निर्दिष्ट कास्ट मान्य नहीं है।"} डेटा: {System.Collections.ListDictionaryInternal} हेल्पलिंक : शून्य इनर एक्सेप्शन: शून्य संदेश: "निर्दिष्ट कास्ट मान्य नहीं है।" स्रोत: "System.Data.DataSetExtensions" स्टैकट्रेस: "System.Data.DataRowExtensions.UnboxT'1.NullableField [TElem] (ऑब्जेक्ट वैल्यू) \ r \ n System.Data.DataRowExtensions.Field [T] (दा पर –