【发布时间】:2016-11-04 13:50:03
【问题描述】:
我有一个 MongoDB 集合,其中包含一个表示日期的字符串字段。在我的 C# 应用程序中,我将结果映射到具有聚合字段的类,该聚合字段将该字符串转换为 DateTime 对象
[BsonIgnoreExtraElements]
public class Tweet
{
public ObjectId Id { get; set; }
[BsonElement("text")]
public string Texto { get; set; }
[BsonElement("created_at")]
public string Fecha { get; set; }
public DateTime FechaConvertida
{
get
{
var formato = "ddd MMM dd HH:mm:ss zzzz yyyy"; //'Sun Oct 23 19:42:04 +0000 2016'
var enUS = new CultureInfo("en-US");
var fechaConvertida = DateTime.ParseExact(this.Fecha, formato, enUS, DateTimeStyles.None);
return fechaConvertida;
}
}
}
然后在我的 api 上查询过滤两个日期之间的元素(使用“CSharp Driver LINQ”)
public IEnumerable<Tweet> GetTweetsDePeriodo(string nombreColeccion, int dias)
{
var hoy = DateTime.Today;
var fechaInicial = hoy.AddDays(-dias);
var coleccion = _db.GetCollection<Tweet>(nombreColeccion).AsQueryable<Tweet>();
var tweetsFiltrados = (from c in coleccion
where c.FechaConvertida >= fechaInicial
select c
).ToList();
return coleccion;
}
然后我收到以下错误: *处理请求时发生未处理的异常。 InvalidOperationException: {document}.FechaConvertida 不受支持
有什么想法吗? 提前致谢,
【问题讨论】:
-
你能将 fechaInicial 声明为 DateTime 而不是 var。
-
你能告诉我们你的推文数据对象吗?
-
@viveknuna 我试过了,但没有改变任何东西。无论如何,谢谢,
-
@Dudemanword 推文数据对象是一个大 json,实际上它只是返回 Twitter API 的对象。在这种情况下,相关的是在“Created_at”字段中返回的带有日期的字符串的格式,这很奇怪:“Sun Oct 23 19:42:04 +0000 2016”。我认为这是主要问题,因为库无法解析它。感谢您的帮助。