SQL LINQ 转换为字符串

SQL LINQ Convert to String

如何将日期时间 SQL 转换为可以格式化的字符串?我还没有找到将 "requestIniationDate" 转换为可以格式化的字符串的方法。

protected void Page_Load(object sender, EventArgs e)
{
    //"data" is a database connection through the Data folder, containing the tables
    var data = new Data.AcademicCodeRequestDBEntities();

    var request = data.Requests.Select(x => new 
                        {
                            x.appName, 
                            x.requestIniatiationDate, 
                            x.status, 
                            x.id
                        }).ToList()
                        .Select(x => new Models.RequestIdentifier() 
                        {
                            id = x.id,
                            appName = x.appName,
                            requestIniatiationDate = x.requestIniatiationDate,
                            status = x.status,

                        });
    editGrid.DataSource = request;
    editGrid.DataBind();
}

使用 .ToString("d") 怎么样?看 https://docs.microsoft.com/en-us/dotnet/standard/base-types/standard-date-and-time-format-strings

protected void Page_Load(object sender, EventArgs e) {
    var data = new Data.AcademicCodeRequestDBEntities();
    var request = data.Requests.Select(x => new 
                    {
                        x.appName, 
                        x.requestIniatiationDate.ToString("d"), 
                        x.status, 
                        x.id
                    }).ToList()
                    .Select(x => new Models.RequestIdentifier() 
                    {
                        id = x.id,
                        appName = x.appName,
                        requestIniatiationDate = x.requestIniatiationDate.ToString("d"),
                        status = x.status,
                    });
    editGrid.DataSource = request;
    editGrid.DataBind();
}

假设 requestIniatiationDate 是一个字符串,你可以这样做:

protected void Page_Load(object sender, EventArgs e)
{
    //"data" is a database connection through the Data folder, containing the tables
    var data = new Data.AcademicCodeRequestDBEntities();

    var request = data.Requests.Select(x => new 
                        {
                            x.appName, 
                            x.requestIniatiationDate, 
                            x.status, 
                            x.id
                        }).ToList()
                        .Select(x => new Models.RequestIdentifier() 
                        {
                            id = x.id,
                            appName = x.appName,
                            requestIniatiationDate = x.requestIniatiationDate.ToString("yyyy-MM-dd"), //change to the format you want
                            status = x.status,

                        });
    editGrid.DataSource = request;
    editGrid.DataBind();
}

假设 reqiestInitiationDate 是 DateTime 并且您想要格式 yyyy-MM-dd

protected void Page_Load(object sender, EventArgs e)
{      
    var data = new Data.AcademicCodeRequestDBEntities();    
    var request = data.Requests
                        .Select(x => new Models.RequestIdentifier() 
                        {
                            id = x.id,
                            appName = x.appName,
                            requestIniatiationDate = x.requestIniatiationDate.ToString("yyyy-MM-dd"),
                            status = x.status,    
                        }).ToList();
    editGrid.DataSource = request;
    editGrid.DataBind();
}

根据您的评论,requestIniatiationDatex.requestIniatiationDate 都是 两者 DateTime。这是问题的根源,因为您无法将 string 分配给 DateTime.

一个DateTime没有一个"format"的概念。如果您想以特定格式在页面上显示日期,您需要使用字符串来显示它。因此,您需要修改 RequestIdentifier 模型以使用字符串而不是 DateTime,或者根据它在前端的显示方式,您可以使用控件的 属性。例如,如果您使用 <asp:boundfield>,您可以这样做:

<asp:boundfield datafield="requestIniatiationDate" dataformatstring="{0:MMMM d, yyyy}" htmlencode="false" />

显然替换为您需要的任何日期格式(您尚未指定)。

除此之外,您的 Linq 语句毫无意义。你具体化了一个列表,然后 .Select() 在上面.. 你无缘无故地先 select 成一个匿名对象,这一切都很混乱。您应该能够做到这一点:

var request = data.Requests.Select(x => new Models.RequestIdentifier() 
                    {
                        id = x.id,
                        appName = x.appName,
                        requestIniatiationDate = x.requestIniatiationDate,
                        status = x.status,
                    })
                    .ToList();

你可以这样实现:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture);

dt.ToString("yyyyMMdd");