使用Linq执行实体转换(NVARCHAR,ValidDate.Date,102)



我有一个SQL语句:

Select convert(NVARCHAR, MyDate, 102) + ' ' + convert(NVARCHAR, AccountId) AS Temp from MyTable

我想用Linq把它转换成实体。有人建议我查询MyDate和AccountId,并使用Linq对对象使用.ToString((。但我希望sql server通过执行convert((方法进行转换。

我很高兴发现SqlClient类可以帮助在服务器端执行方法。不幸的是,没有Convert()方法,只有StringConvert(),它只能将double转换为字符串。我可以在服务器上执行convert(NVARCHAR, MyDate, 102)吗?

我已经确认您不能在Linq中对实体使用Cast和Convert,这很可悲。引用的页面建议使用用户定义的函数,但是UDF会影响性能。

我意识到,虽然我不能将date转换为string,但我可以将date转换为日期部分(int(,将其转换为double,将其转化为string

Temp = SqlFunctions.StringConvert((double)SqlFunctions.DatePart("year", MyDate), 4) + "."
+ SqlFunctions.StringConvert((double)SqlFunctions.DatePart("month", MyDate), 2) + "."
+ SqlFunctions.StringConvert((double)SqlFunctions.DatePart("day", MyDate), 2) + ". - "
+ SqlFunctions.StringConvert((double)x.AccountId, 5)

这不是最好的解决方案,因为我可以使用";01〃;而不是";1〃;。

最新更新