簡體   English   中英

C#Linq To實體格式為IQueryable的DateTime

[英]C# Linq To Entities Formatted DateTime in IQueryable

我想要實現的是獲取“ 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
};

我同意這樣的觀點,即應該在表示層中進行處理。 但是,如果您真的想在SQL Server上執行此操作,則可以將0附加到代表分鍾的字符串上,然后使用Right函數僅接受2個最右邊的字符。

 SqlFunctions.Right("0" + SqlFunctions.StringConvert(
     (double)SqlFunctions.DatePart("mi", i.ImportTimeStamp)), 2)

解決該問題的一種方法是創建一個構造函數。

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
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM