C# DateTime.TryParse实现问题
我有一段代码,需要确定收到的值是否为DateTime,如果是,则返回0,否则返回值以计算总和:C# DateTime.TryParse实现问题,c#,.net,C#,.net,我有一段代码,需要确定收到的值是否为DateTime,如果是,则返回0,否则返回值以计算总和: row["Total"] = months.Sum(kv => { DateTime dateValue; if (!DateTime.TryParse(kv.Value, out dateValue))
row["Total"] = months.Sum(kv =>
{
DateTime dateValue;
if (!DateTime.TryParse(kv.Value, out dateValue))
{
return double.Parse(kv.Value);
}
else
{
return 0;
}
});
但这些值也被视为日期时间
1726.07
4756.06
1.08
1.27
1.11
那么,每个双精度值都将被视为DateTime吗?您可以试试这个
DateTime dateValue;
months.Where(kv=>(!DateTime.TryParse(kv.Value, out dateValue))).Sum(kv =>double.Parse(kv.Value));//Sum of values where values are not datetime
如果你“一路走”怎么办
row["Total"] = months.Sum(kv =>
{
double toReturn = 0;
if (!Double.TryParse(kv.Value, out toReturn )) return 0;
return toReturn;
});
有时可以使用DateTime解析双精度值。解析,但我不相信您可以将“22/06/2015”这样的日期解析为双精度。你并不真的需要这个“其他”的说法
另一个选项是使用DateTime.TryParseExact并指定日期的格式…什么是
months
?它首先是如何设置这些值的?这似乎是真正的问题。请尝试指定匹配所需的格式。为什么不先尝试double.TryParse
呢无论如何,猜测数据类型总是很棘手的。首先要避免这种情况。如果您知道可以使用DateTime.TryParseExact
@Ali的格式,我的观点是months
似乎与它所保存的数据不一致。如果可能的话,我会在问题进一步升级之前解决它。请不要只是随便猜测。您的代码将具有与OP相同的效果。现在根据@ali comment…他可以试试这个