使用 Linq to entities 执行 convert(NVARCHAR, ValidDate.Date, 102)
Perform convert(NVARCHAR, ValidDate.Date, 102) with Linq to entities
我有一个SQL声明:
Select convert(NVARCHAR, MyDate, 102) + ' ' + convert(NVARCHAR, AccountId) AS Temp from MyTable
我想用 Linq to Entities 将其转换。有人建议我查询 MyDate 和 AccountId,并使用 Linq to object 我可以使用 .ToString()。但我希望 sql 服务器通过执行 convert() 方法进行转换。
我很高兴找到 SqlClient class 这有助于在服务器端执行方法。不幸的是,没有 Convert()
方法,只有 StringConvert()
只能将双精度转换为字符串。我可以在服务器上执行 convert(NVARCHAR, MyDate, 102)
吗?
我发现 您不能在 Linq to entities 中使用 Cast 和 Convert,这很遗憾。参考页面建议使用用户定义的函数,但 UDF 会影响性能。
我意识到虽然我无法将 date
转换为 string
,但我可以将 date
转换为日期部分 (int
),即 [=15] =],然后 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”。
我有一个SQL声明:
Select convert(NVARCHAR, MyDate, 102) + ' ' + convert(NVARCHAR, AccountId) AS Temp from MyTable
我想用 Linq to Entities 将其转换。有人建议我查询 MyDate 和 AccountId,并使用 Linq to object 我可以使用 .ToString()。但我希望 sql 服务器通过执行 convert() 方法进行转换。
我很高兴找到 SqlClient class 这有助于在服务器端执行方法。不幸的是,没有 Convert()
方法,只有 StringConvert()
只能将双精度转换为字符串。我可以在服务器上执行 convert(NVARCHAR, MyDate, 102)
吗?
我发现
我意识到虽然我无法将 date
转换为 string
,但我可以将 date
转换为日期部分 (int
),即 [=15] =],然后 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”。