无法将类型'System.Int32'强制转换为类型'系统。对象'。LINQ to 实体仅支持强制转换 EDM 基元或枚举类型



嗨,我相信这个问题在StackOverFlow上已经被问了100次了,但我没能解决我的问题。这是给我带来麻烦的代码行

 DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null,

请说明如何解决此问题。

全代码

     var result = resultVideoKlipBaseInfo.Select(x => new
            {
                x.IDvideoKlip,
                x.LokacijaHDD,
                x.NazivVideoKlipa,
                x.Snimatelj.IDsnimatelj,
                x.Snimatelj.Ime,
                x.Snimatelj.Prezime,
                x.Snimatelj.Storno,
                DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null,
                SatIMinutaSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Hour + ":" + ((DateTime)x.VrijemeSnimanja).Minute : null,
                x.VrijemeSnimanja,                          
                x.VrijemeTrajanjaKlipa
            });
            return Ok(result);

使用此代码,我将从数据库中获取DateTime,并将其从DateTime格式转换为字符串格式。

我想从2016年12月31日00:00:00.000得到这样的

感谢大家阅读此问题:)

您不能在针对数据库的查询中使用ToString()进行格式化,因为没有等效的SQL方法,它会给您带来错误。(以下是支持的字符串方法列表,BTW:https://msdn.microsoft.com/en-us/library/bb738534(v=vs.100).aspx).

最简单的方法是返回原始值,然后在调用主查询后进行格式化(通过对其调用ToList(),或迭代结果)。

以下是几种方法:

如何在Linq Query中将DateTime转换为字符串?

将日期时间转换为LINQ到SQL查询中的格式化字符串

我通过更改代码行来解决这个问题

DatumSnimanja = (x.VrijemeSnimanja != null) ? ((DateTime)x.VrijemeSnimanja).Day + "." + ((DateTime)x.VrijemeSnimanja).Month + "." + ((DateTime)x.VrijemeSnimanja).Year : null,

进入此

    DatumSnimanja = SqlFunctions.DateName("day", x.VrijemeSnimanja) + "." + SqlFunctions.DateName("month", x.VrijemeSnimanja) + "." +  SqlFunctions.DateName("year", x.VrijemeSnimanja),

感谢大家的帮助!:)

最新更新