LinqToEntity中.toString()与.toShortDateTime()无法使用的问题解决方式

若直接在linq中使用tostring,或者todatestring正常来说会报以下错:

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

//LINQ to Entities 不识别'System.String ToShortDateString()' 方法


解决方法:

EF6要引用 "System.Data.Entity.SqlServer;"的命名空间.

EF4则是要引用"System.Data.Objects.SqlClient"的命名空间 

解决类型一     整型到字符串:

   int pId = 99;                               

  //(1)
                string str_pId = pId.ToString();
                var customer = entities.Customer.Where(u => u.propId == str_pId).FirstOrDefault();

或者
                //(2)
 //var customer = entities.Customer.Where(u => u.propId == SqlFunctions.StringConvert((double)pId).Trim()).FirstOrDefault(); //因为SqlFunctions.StringConvert()在字符串前产生了空格,所以要使用Trim  ();


===========================================================================

 解决类型二 日期转换:

    //(1)
                //string str_Dt = "2017-11-29 15:06:30.130";
                //DateTime dt = Convert.ToDateTime(str_Dt);
                //var customer = entities.Customer.Where(u=> u.CREATED_DT==dt).FirstOrDefault();

或者
                //(2)
                //string str_Dt = "2017-11-29 15:06:30.130";
     //var customer = entities.Customer.Where(u =>  SqlFunctions.DateDiff("day",str_Dt, u.CREATED_DT )==0).FirstOrDefault();  //取CREATE_DT与str_Dt的时间差为0,即CREATE_DT与str_Dt相等



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值