Linq – 从DateTime中选择日期
我有一个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
实际上,我将它绑定到Control作为DataSource
,控件显示Date and Time
。但我想只显示date
。
当我尝试使用CREATED_DATE = xx.CREATED_DATE.Value.Date
,它会给出如下错误:
LINQ to Entities不支持指定的类型成员“Date”。 仅支持初始化程序,实体成员和实体导航属性。
如果是出于演示目的,那么您可以使用DataFormatString
属性。 例如,如果要将数据源绑定到GridView,则可以执行以下操作:
否则,您可以使用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 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 { 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();
输出日期为dd / MM / yyyy格式
试试这个,
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; } }
希望它对你有用