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),

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。第1张

2、

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

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。第2张

3、

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

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。第3张

注意:月份只有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 indata.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
                    };

LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。第4张

免责声明:文章转载自《LINQ to Entities 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式。》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇实现JTable的列宽与内容的自适应CentOS7关闭防火墙方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VB.NET中LINQ TO List泛型查询语句(分组,聚合函数)

Public Class LinqToList 'LINQ在C#中使用比较方便,但是在VB中使用比较麻烦,复杂,和C#用法并不太一样 Dim listNew As List(Of Product) = New List(Of Product) '新商品 Dim listOld As List(Of Product) = New L...

.NET Core3.1 LINQ查询

1、LINQ介绍   LINQ(Language Integrated Query,语言集成查询),是c#编程语言中的一种查询语法。有了LINQ,使得以相同的语法访问不同的数据源成为可能。这是因为,LINQ提供了不同数据源的抽象层。 2、LINQ查询基础   本节介绍了一个简单的LINQ查询。在此基础上,着重理解:c#提供了转换为方法调用的集成查询语言。...

linq的decimal类型保存到数据库只保存到小数点后两位的问题

今天的一个decimal类型保存到数据的问题困扰了我很长时间,最后就是一个小小的设置问题解决······坑······深坑···· 话不多说,直接说问题,在说答案: 问题:linq当采用EF的DbContext保存decimal类型数据到数据库,默认只会保存小数点后的前2位小数,其余均置0;         例如保存1.23456789,实际存到数据库里的...

.NetCore 使用 Linq 动态拼接Expression表达式条件来实现 对EF、EF Core 扩展查询排序操作

相信在使用EF的时候对查询条件或者排序上的处理令人心烦,下面我们就来动态拼接表达式解决这一问题 当我们在查询中使用Where的时候可以看到如下参数 下面我们就来扩展 Expression<Func<T,bool>> 这个参数 第一步: 建立处理功能类 首先我们要创建一个查询条件转化为表达式的泛型功能类 如UosoExpressio...

linq之into子句

  在Linq表达式中,into子句可以创建一个临时标识符,使用该标识符可以存储group、join或select子句的结果。 下面实例中我们用GroupOtherQuery方法来演示group子句对结果集进行分组。 1 private void GroupOtherQuery() 2 { 3 4 L...

Linq之关键字基本查询

子句 说明 from 指定数据源和范围变量(类似于迭代变量)。 where 根据一个或多个由逻辑“与”和逻辑“或”运算符(&& 或 &#124;&#124;)分隔的布尔表达式筛选源元素。 select 指定当执行查询时返回的序列中的元素将具有的类型和形式。 group 按照指定的键值对查询结果进行分组。...