博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。...
阅读量:5970 次
发布时间:2019-06-19

本文共 2781 字,大约阅读时间需要 9 分钟。

var data = DataSource.Skip(iDisplayStart).Take(iDisplayLength).Select(o => new            {                MatNR = o.MatNR,                MatDB = o.MatDB,                CreatedOn=o.CreatedOn.ToString(),                CreatedBy = o.CreatedBy,                Id2 = o.MatNR            });

 以上语句就会出现这个提示:LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。

解决方法有两种

 一、使用SqlFunctions

1、

CreatedOn = SqlFunctions.DateName("year", o.CreatedOn) + "-"                 + SqlFunctions.DateName("month", o.CreatedOn) +"-"                + SqlFunctions.DateName("day",o.CreatedOn),

 

2、

CreatedOn= SqlFunctions.DateName("yyyy", o.CreatedOn)                           +"-"+                                          SqlFunctions.StringConvert((decimal)SqlFunctions.DatePart("mm", o.CreatedOn))                           +"-"+                           SqlFunctions.DateName("dd",o.CreatedOn),

 

3、

CreatedOn = SqlFunctions.DateName("yyyy", o.CreatedOn)                            + "-" +                            SqlFunctions.StringConvert((decimal)SqlFunctions.DatePart("mm", o.CreatedOn)).Trim()                            + "-" +                            SqlFunctions.DateName("dd", o.CreatedOn),

注意:月份只有1位数!还不够完美。

 

二、Linq-to-entities 转换到Linq-to-objects

//Do it in two steps - one L2E query that does the L2E supported part, and a L2O query that does the date formatting and other stuff that is best done in .net code...

 Linq-to-entities query to get the fullname, categoryname, and date

//var query = from c in db.Contacts select new { c.FullName, c.Category.CategoryName, c.DateCreated };

 

Linq-to-objects query (.AsEnumerable will separate the L2E from L2O part) that call date formatting methods and other stuff that isn't supported by L2E

//var r = from c in query.AsEnumerable() select new { c.FullName, c.CategoryName, ShortDate = c.DateCreated.ToShortDateString() };

var data = DataSource.Skip(iDisplayStart).Take(iDisplayLength).Select(o => new            {                MatNR = o.MatNR,                MatDB = o.MatDB,                CreatedOn=o.CreatedOn,                CreatedBy = o.CreatedBy,                Id2 = o.MatNR            });var a = from c in data.AsEnumerable()                    select new                    {                        MatNR = c.MatNR,                        MatDB = c.MatDB,                        //CreatedOn = Convert.ToDateTime(c.CreatedOn).ToShortDateString(),// 2014/2/28                        //CreatedOn = c.CreatedOn.ToString(),//2014/2/28 15:09:40                        CreatedOn =c.CreatedOn.ToString("yyyy-MM-dd"),//如果数据库里的日期字段可以为null,则CreatedOn.ToString("yyyy-MM-dd")这种方式是不可以的,如果不为null则可以;
CreatedBy = c.CreatedBy,                        Id2 = c.MatNR                    };

 

 

转载于:https://www.cnblogs.com/ibgo/p/3615581.html

你可能感兴趣的文章
asp.net获取网站路径
查看>>
asp.net 中chartlet 统计图表的的使用
查看>>
mongodb 简单部署方案及实例
查看>>
java.util.date转化成java.sql.date
查看>>
缓存框架OSCache部分源码分析
查看>>
我的友情链接
查看>>
mysql多启动与日志调优
查看>>
我的友情链接
查看>>
Handler(上)——Mars Andoird开发视频第二季第六集(重)
查看>>
CentOS 6.8 GRUB加密-修复和破解密码实战指南
查看>>
bashrc与profile的相关知识
查看>>
Apache安装遇到的相关问题
查看>>
我的学习计划
查看>>
outlook自定义邮件提示声音以及设置接收邮件的间隔时间
查看>>
值传递、指针传递、引用传递的区别
查看>>
facebook 分享,遇到的错误
查看>>
svn 部署问题总结
查看>>
我的友情链接
查看>>
一个用了统计CPU 内存 硬盘 使用率的shell脚本
查看>>
数据库表连接查询
查看>>