Итак, вот код:
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. Библиотека для работы с базой данных - это dotConnect for Oracle от devArt.