若直接在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相等