我想要实现的是获得" FormattedTimeStamp"成员变量,包含格式如下的日期:" 12/09/2015 13:00"
我得到的是:" 12/9/2015 13:0"
无论如何使用普通的LINQ to SQL而不是传播到服务器(使用AsEnumerable()等)来实现这一点吗?
请参阅下文,了解我现在所编制和运行的内容,但没有给出我需要的内容。
谢谢。
IQueryable<Import_ErrorDTO> dtoErrors = from i in errors
select new Import_ErrorDTO
{
Error_ID = i.Error_ID,
ErrorDescription = i.ErrorDescription,
FileName = i.FileName,
ImportTimeStamp = i.ImportTimeStamp,
FormattedImportTimeStamp = SqlFunctions.StringConvert((double)SqlFunctions.DatePart("Month", i.ImportTimeStamp)).Trim() + "/" +
SqlFunctions.StringConvert((double)SqlFunctions.DatePart("Day", i.ImportTimeStamp)).Trim() + "/" +
SqlFunctions.StringConvert((double)SqlFunctions.DatePart("Year", i.ImportTimeStamp)).Trim() + " " +
SqlFunctions.StringConvert((double)SqlFunctions.DatePart("hh", i.ImportTimeStamp)).Trim() + ":" +
SqlFunctions.StringConvert((double)SqlFunctions.DatePart("mi", i.ImportTimeStamp)),
Program = i.Program
};
答案 0 :(得分:1)
我同意这个意见,它应该在表示层处理。但是如果您真的想在SQL服务器上执行此操作,则可以将0
置于表示分钟的字符串中,然后仅使用Right
函数将最右边的2个字符包含在内。
SqlFunctions.Right("0" + SqlFunctions.StringConvert(
(double)SqlFunctions.DatePart("mi", i.ImportTimeStamp)), 2)
答案 1 :(得分:-1)
解决此问题的一种方法是创建构造函数;
public Import_ErrorDTO(DateTime dt)
{
FormattedDate = dt.ToString("MM/dd/yyyy HH:mm");
}
然后传入ImportTime:
IQueryable<Import_ErrorDTO> dtoErrors = from i in errors
select new Import_ErrorDTO(i.ImportTimeStamp)
{
Error_ID = i.Error_ID,
ErrorDescription = i.ErrorDescription,
FileName = i.FileName,
ImportTimeStamp = i.ImportTimeStamp,
Program = i.Program
};