C#将带掩码的字符串中可为空的DateTime转换为Select New
本文关键字:DateTime 转换 New Select 掩码 字符串 | 更新日期: 2023-09-27 17:58:17
我必须从实体框架重试可为null的Datetime,并将其转换为以下类型的掩码字符串:ToString("dd-MM-yyyy")
我用这个代码重试所有值(现在我显示唯一的DataLead)
var dbResult = conc.Clientes.Where(x => x.StatoCliente == "1").ToList();
var leads = from e in dbResult
select new
{
e.DataLead
} into selectedLead
select selectedLead;
return Json(leads, JsonRequestBehavior.AllowGet);
在我代码的另一部分,我用这个代码进行转换:
DateTime date = (DateTime) DataLead;
string dateElaborated = date.ToString("dd-MM-yyyy");
但是,如何在LINQ选择函数中执行此操作?
感谢所有
您可以使用字符串。格式(假设e.DateLead是可为null的DateTime类型):
var dbResult = conc.Clientes.Where(x => x.StatoCliente == "1").ToList();
var leads = from e in dbResult
select new
{
Datalead = string.Format("{0:dd-MM-yyyy}", e.DataLead)
};
或者C#6 中的新功能
var leads = from e in dbResult
select new
{
Datalead = e.DataLead?.Value.ToString("dd-MM-yyyy")
};
var leads = conc.Clientes
.Where(o => o.StatoCliente == "1" && o.DataLead.HasValue)
.Select(o => o.DataLead.Value.ToString("dd-MM-yyyy"))
.ToList();
简单明了。此外,我强烈建议不要使用像"1"
这样的字符串文字,而是引入枚举或常量值。
这个怎么样:
// Get alternative text if DataLead is null
var leads = dbResult.Select(entry => entry.DataLead)
.Select(date => date.HasValue
? date.Value.ToString("dd-MM-yyyy")
: "unknown");
// Get only entries where DataLead is not null.
var leads = dbResult.Select(entry => entry.DataLead)
.Where(entry => entry.HasValue)
.Select(date => date.Value.ToString("dd-MM-yyyy"));
var leads = from e in dbResult
select new {
selectedLead = e.DataLead != null ? e.DataLead.ToString("dd-MM-yyyy"): string.Empty
};