异常的堆栈跟踪是:
System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi,
DateTimeStyles styles)
at lambda_method(Closure , **MyType** )
at System.Linq.Enumerable.WhereListIterator`1.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
MyType映射到DB中的表,该表具有date类型的列。
现在,在我的代码中,我有以下方法:
private static List<T> MyMethod<T>(IEnumerable<T> results)
{
if (results == null)
{
return null;
}
var filteredResults = results.AsQueryable();
return filteredResults.ToList();
}
异常发生在行:return filteredResults.ToList();
保存在DB中的格式为:2016-12-14 (YYYY-MM-DD)。 我理解(从阅读有关此问题的其他主题),问题可能与服务器的文化或时间/日期设置有关。然而,我还没有成功地复制这个例外。您对如何重现或预防此问题有任何建议吗?
答案 0 :(得分:0)
在这些情况下,有时可以帮助在类型中添加额外的字符串属性,以避免数据绑定问题。然后,您可以将数据库值写入该字符串字段,然后以受控方式将其转换为另一个字段中的DateTime。
public class PocoObject
{
public string DateString { get; set; }
public DateTime Date
{
get
{
DateTime date;
return DateTime.TryParseExact(DateString,
"yyyy-MM-dd",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out date)
? date : DateTime.MinValue;
}
}
}