我有以下声明作为构建数据表的数据行的一部分,我想知道我是否可以使用lambda语句或更优雅的东西来缩短它。
if (outval(line.accrued_interest.ToString()) == true)
{
temprow["AccruedInterest"] = line.accrued_interest;
}
else
{
temprow["AccruedInterest"] = DBNull.Value;
}
该陈述由以下方式检查:
public static bool outval(string value)
{
decimal outvalue;
bool suc = decimal.TryParse(value, out outvalue);
if (suc)
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:2)
public static bool outval(string value)
{
decimal outvalue;
return decimal.TryParse(value, out outvalue);
}
temprow["AccruedInterest"] = outval(line.accrued_interest.ToString()) ? (object)line.accrued_interest : (object)DBNull.Value;
修改强>
转换为object
非常重要,因为?:
三元运算符需要返回结果,true case和false case都必须隐式转换为other。我不知道accrued_interest
的类型是什么我认为它是double
或decimal
,因为decimal
和DBNull
之间没有隐式转换。为了使其工作,您必须转换为object
类型。
那是清楚的吗?
答案 1 :(得分:2)
http://msdn.microsoft.com/en-us/library/ty67wk28.aspx
int input = Convert.ToInt32(Console.ReadLine());
string classify;
// if-else construction.
if (input < 0)
classify = "negative";
else
classify = "positive";
// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive";
答案 2 :(得分:1)
您无需调用单独的方法。不需要方法或任何其他东西
decimal result;
if(decimal.TryParse(line.accrued_interest.ToString(),out result))
temprow["AccruedInterest"] = line.accrued_interest
else
temprow["AccruedInterest"] = DBNull.Value;
答案 3 :(得分:0)
此外,
public static bool outval(string value)
{
decimal outvalue;
bool suc = decimal.TryParse(value, out outvalue);
if (suc)
{
return true;
}
else
{
return false;
}
}
要..
public static bool outval(string value)
{
decimal outvalue;
return decimal.TryParse(value, out outvalue);
}