LINQ to Entities仅支持无参数的构造函数和初始化程序

Gib*_*boK 1 .net c# linq

我得到这个错误,

 Only parameterless constructors and initializers are supported in LINQ to Entities.
Run Code Online (Sandbox Code Playgroud)

当我尝试从自定义类型投影到DateTime数组时,请注意DateCreated类型DateTime

知道如何解决吗?

           DateTime[] data = analyticRepo.GetAll()
                                      .Where(x => DbFunctions.TruncateTime(x.DateCreated) == report.DateCreated.Date)
                                      .Select(x => new DateTime(
                                          x.DateCreated.Year,
                                          x.DateCreated.Month,
                                          x.DateCreated.Day,
                                          x.DateCreated.Hour,
                                          x.DateCreated.Minute,
                                          x.DateCreated.Second,
                                          x.DateCreated.Millisecond))
                                      .ToArray();
Run Code Online (Sandbox Code Playgroud)

LINQ to Entities仅支持无参数的构造函数和初始化程序。

D S*_*ley 5

如果x.DateCreated已经是一个DateTime,只要选择的是

DateTime[] data = analyticRepo.GetAll()
                              .Where(x => DbFunctions.TruncateTime(x.DateCreated) == report.DateCreated.Date)
                              .Select(x => x.DateCreated)
                              .ToArray();
Run Code Online (Sandbox Code Playgroud)

否则,您将必须实现所有结果,然后创建新DateTime对象:

DateTime[] data = analyticRepo.GetAll()
                              .Where(x => DbFunctions.TruncateTime(x.DateCreated) == report.DateCreated.Date)
                              .Select(x => x.DateCreated)
                              .AsEnumerable() // transition to Linq-to-Objects
                              .Select(x => new DateTime(
                                  x.Year,
                                  x.Month,
                                  x.Day,
                                  x.Hour,
                                  x.Minute,
                                  x.Second,
                                  x.Millisecond))
                              .ToArray();
Run Code Online (Sandbox Code Playgroud)