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();
}
根据您的评论,requestIniatiationDate
和 x.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");
如何将日期时间 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();
}
根据您的评论,requestIniatiationDate
和 x.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");