zoukankan      html  css  js  c++  java
  • LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。

    复制代码
    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
                        };
    复制代码

  • 相关阅读:
    .NET Core 服务调用 RPC
    从Docker 到 Kubernatetes 的跃迁之路
    同步异步-多线程梳理
    Net的微服务选型之路
    Visual Studio 2019安装SSIS
    HL7协议的基本语法
    vue学习笔记
    开发常用的部分sql语句总结
    VSPD虚拟串口来调试通信接口程序
    SSRS报表工具之合并行数据
  • 原文地址:https://www.cnblogs.com/siyunianhua/p/9341389.html
Copyright © 2011-2022 走看看