您好我已经注意到,如果我使用TimespanObj.ToString(),它会给我提供完美的输出,如12:33:00。
但我使用以下linq查询。
var time = SomeSimpleQuery.Select(t => new { time = t.FromTime.ToString() });
其中FromTime是SQL数据库中的时间(7)和LINQ-TO-SQL类中的Timespan(默认情况下)。
然后我得到的输出格式如“jan 1 1900 12:00 PM”。为什么呢?
答案 0 :(得分:4)
我怀疑这是因为查询的“ToString”部分是在SQL中而不是在.NET中执行的。您应该能够通过检查正在执行的SQL来确认这一点。
尝试直接获取FromTime
属性,然后在结果上调用ToString()
。如果要将所有内容保存在LINQ查询中,可以使用AsEnumerable
强制在.NET端执行处理:
var time = SomeSimpleQuery.Select(t => t.FromTime)
.AsEnumerable()
.Select(t => new { time = t.ToString() });
如果你想获取其他东西,只需通过:
var query = SomeSimpleQuery.Select(row => new { UserId=row.UserId,
Query=row.Query,
Time=t.FromTime })
.AsEnumerable()
.Select(t => new { t.UserId, t.Query,
Time=t.FromTime.ToString() });
答案 1 :(得分:1)
我不记得具有时间跨度类型的SQL。时间只是一天中的一小时。
从MSDN(对于时间数据类型):
定义一天的时间。现在的时间是 没有时区意识,是 基于24小时制。