使用 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”。