【问题标题】:Unable to cast the type 'System.DateTime' to type 'System.Object'. LINQ无法将类型“System.DateTime”转换为类型“System.Object”。 LINQ
【发布时间】:2011-06-22 22:53:44
【问题描述】:

我尝试了很多方法来解决 似乎 很简单的问题。非常感谢任何帮助!

代码:

类:

public class MyModel
{
    public DateTime date { get; set; }
    public int total { get; set; }
}

List<MyModel> query = (from ds in dataSource
  group ds by ds.someDate into dsg
  select new MyModel
  {
    date = dsg.Key,
    total = dsg.Sum(ds => ds.Amount)
  }).ToList<MyModel>();

错误:

无法将类型“System.DateTime”转换为类型“System.Object”。 LINQ to Entities 仅支持转换实体数据模型基元类型。

谢谢!

【问题讨论】:

  • 请通过缩进四个空格来格式化您的代码。
  • @shiv: +1 用于清理烦人的标记。
  • 我为标记道歉。这是我对该网站的第一个问题,在添加标记之前没有显示新的行和空格...
  • 看来我认为的问题不是问题。上面的代码实际上是有效的,它是我选择中的另一列导致了这个问题。用于发布愚蠢问题的 UNDO 按钮在哪里?

标签: linq-to-entities


【解决方案1】:

将您的 MyModel.date 属性从 object 更改为 DateTime

或者,将您的代码更改为

List<DateTime> dates = dataSource.Select(ds => ds.someDate)
                                 .Distinct()
                                 .ToList();

【讨论】:

  • 它已经是一个 DateTime 属性。查询中还返回了我没有显示的其他属性(以简化代码)...所以我需要 group by 子句。
  • 我添加了基本类定义和聚合属性。
  • @user:您添加的类定义与 LINQ 查询无关。如果您正在对其进行更改以保护您的代码,那很好。但它应该仍然是工作代码。
  • 为 MyModel 添加了定义。
  • 再次更改...抱歉造成混淆。重新创建代码以试图简化它是非常困难的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多