14

我有一个Linq结果,我只需要从中Date选择DateTime
我的查询是这样的:

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 Entities 不支持指定的类型成员“日期”。仅支持初始化程序、实体成员和实体导航属性。

4

5 回答 5

28

如果是出于演示目的,那么您可以使用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();
于 2013-09-26T07:17:56.187 回答
2

使用这个...它对我有用..

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 格式

于 2018-03-16T11:44:15.917 回答
0

也许这个?

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();
于 2013-09-26T07:11:42.403 回答
0
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();
于 2013-09-26T07:26:40.170 回答
0

试试这个,

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; }

}

希望对你有用

于 2018-09-21T07:53:08.337 回答