所以這裏的重複的邏輯是代碼:對各種對象
return new DistrictInfo {
rid = Convert.ToUInt32(((OracleNumber)o.GetOracleValue("rid")).Value),
doc = Convert.ToUInt16(((OracleNumber)o.GetOracleValue("doctor")).Value),
secdoc = Convert.ToUInt16(((OracleNumber)o.GetOracleValue("secdoctor")).Value),
num = Convert.ToUInt16(((OracleNumber)o.GetOracleValue("num")).Value),
docname = o.GetOracleValue("doctorname") as string,
slpuname = o.GetOracleValue("lpuname") as string,
reason = o.GetOracleValue("reason") as string,
secdocname = o.GetOracleValue("secdocname") as string
};
現在我需要重寫這段代碼做了檢查對象的屬性是否存在與否。這應該是這樣的一段代碼:
DistrictInfo di;
if (!(o["rid"].Equals(DBNull.Value)) && !(o.GetOracleValue("rid").Equals(DBNull.Value)) && (((OracleNumber)o.GetOracleValue("rid")).Value != null))
{
di.rid = Convert.ToUInt32(((OracleNumber)o.GetOracleValue("rid")).Value);
}
但我發現這個代碼有些尷尬和不優雅。我做了很多檢查,因爲我想逃避例外。 所以問題是我們該如何重構這段代碼?告訴我你的想法。我認爲在這麼多檢查中是沒有必要的。我們還需要指定各種對象屬性名稱來爲所有品種成員執行一個代碼塊。我認爲有能力爲此使用LINQ。同樣在第一段代碼中,我們看到了不同的投射,所以我們需要在新代碼中提及它。 在此先感謝你們!
P.S.用於處理數據庫的庫是devArt的dotConnect for Oracle。
提出你的方式來管理各種對象屬性。它不僅限於LINQ。謝謝! – kseen
@kseen:1)什麼類型的變量2)你可以使用.NET 4.0嗎? – sll
[這是解釋](http://www.devart.com/dotconnect/oracle/docs/Devart.Data.Oracle~Devart.Data.Oracle.OracleObject.html)。不,只有.NET Framework 3.5。但是如果有一些很好的功能,我們可以切換到.NET Framework 4.謝謝! – kseen