我遇到了問題。這是我的代碼使用LINQ。當日期時間字段爲空時,LINQ中的「指定的轉換無效」
var resultCases = from row2 in dtCases.AsEnumerable()
where row2.Field<int>("caseID") == caseID2
select new
{
caseName = row2["caseName"].ToString(),
caseCourtPlace = row2["caseCourtPlace"].ToString(),
caseCourtRef = row2["caseCourtRef"].ToString(),
caseOfficeRef = row2["caseOfficeRef"].ToString(),
effectiveDate = ((DateTime)row2["caseEffectiveDate"]),
closedDate = ((DateTime)row2["caseClosedDate"]),
caseFolderPath = row2["casesFolderPath"].ToString(),
category = row2["categoryName"].ToString(),
department = row2["departmentName"].ToString(),
empName = row2["empName"].ToString(),
judgeName = row2["judgeName"].ToString(),
asName = row2["asCasesName"].ToString(),
};
如果closedDate
或effectiveDate
回報DBnull.Value
,我得到
InvalidCastException的是未處理 - 指定的轉換是無效的。
那麼我該如何防止這個錯誤呢?
'row2 [「ca seEffectiveDate「]'返回null或DBNull.Value?他們是不同的。在任何情況下,'row.Field(「caseEffectiveGate」)'是我將開始.. –
2012-11-25 06:12:17
@ pst..Sorry誤解..是的,它返回DBNull.Value .. – Chuki2
所以,然後開始'行。字段 ..'它工作嗎? (它應該返回'NULL'作爲'DBNull.Value',然後可以和coalesce一起使用 - 如果不允許空的DateTime,可以使用'??' - 運算符。) –
2012-11-25 06:31:48