我有一个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〃;。