Linq - 从日期时间中选择日期
本文关键字:日期 选择 时间 Linq | 更新日期: 2023-09-27 18:32:55
我有一个Linq
结果,我只需要从DateTime
中选择Date
。
我的查询是这样的:
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1
select new
{
xx.TEMPLATE_ID,
xx.TEMPLATE_NAME,
//CREATED_DATE = xx.CREATED_DATE.Value.Date
//CREATED_DATE = EntityFunctions.TruncateTime(xx.CREATED_DATE)
xx.CREATED_DATE
}).ToList();
这可能吗?任何帮助将不胜感激。
CREATED_DATE - `datetime` datatype
实际上,我将其作为DataSource
绑定到控件,并且控件同时显示Date and Time
。但我只想显示date
.
当我尝试使用CREATED_DATE = xx.CREATED_DATE.Value.Date
时,它给出了如下错误:
指定的类型成员"日期"在 LINQ to 实体中不受支持。 仅初始值设定项、实体成员和实体导航属性 受支持。
如果是出于演示目的,则可以使用DataFormatString
属性。例如,如果要将数据源绑定到 GridView,则可以执行以下操作;
<asp:BoundField DataField="CREATED_DATE" ...
DataFormatString="{0:d}" ../>
否则,您可以使用 EntityFunctions.TruncateTime() 返回不带时间部分的输入日期。
EntityFunctions.TruncateTime(xx.CREATED_DATE)
您的查询会像;
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1
select new
{
xx.TEMPLATE_ID,
xx.TEMPLATE_NAME,
EntityFunctions.TruncateTime(xx.CREATED_DATE) //new like
}).ToList();
使用这个...它对我有用..
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1
select new
{
xx.TEMPLATE_ID,
xx.TEMPLATE_NAME,
CREATED_DATE=SqlFunctions.DateName("day", xx.CREATED_DATE).Trim() + "/" +
SqlFunctions.StringConvert((double)xx.CREATED_DATE.Value.Month).TrimStart() + "/" +
SqlFunctions.DateName("year", xx.CREATED_DATE)
}).ToList();
输出日期将是日/月/年格式
也许这个?
var qry = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1
select new { xx.TEMPLATE_ID, xx.TEMPLATE_NAME, xx.xx.CREATED_DATE });
var UserTemplates = qry.AsEnumerable().Select(xx => new
{
xx.TEMPLATE_ID,
xx.TEMPLATE_NAME,
xx.CREATED_DATE.Value.Date
}).ToList();
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1 select xx).AsEnumerable()
.Select( i=> new
{
i.TEMPLATE_ID,
i.TEMPLATE_NAME,
CREATED_DATE = i.CREATED_DATE.ToString("M/d/yyyy"),
i.CREATED_DATE
}).ToList();
试试这个,
var UserTemplates = (from xx in VDC.SURVEY_TEMPLATE
where xx.USER_ID == userid && xx.IS_ACTIVE == 1
select new Attributes
{
TEMPLATE_ID=xx.TEMPLATE_ID,
TEMPLATE_NAME=xx.TEMPLATE_NAME,
dateCreatd = xx.CREATED_DATE
})
.AsEnumerable()
.select(p=>new Attributes
{
TEMPLATE_ID =p.TEMPLATE_ID,
TEMPLATE_NAME=p.TEMPLATE_NAME,
dateString = p.dateCreatd .Value.toString("YYYY-MMM-dd")
}).ToList();
public class Attributes
{
public string TEMPLATE_ID { get; set; }
public string TEMPLATE_NAME { get; set }
public DateTime dateCreatd { get; set; }
public string dateString { get; set; }
}
希望对您有用