Linq的短日期

时间:2014-04-23 13:52:42

标签: c# linq

我希望我的查询停止显示时间和日期。这是我尝试过的:

Query= (from z in ctx.Interactions 
        where z.ActivityDate <= StartDateTo
           && z.ActivityDate >= EndDateTo
           && z.Indepth == false
        select new
               {
                   Date = new DateTime(z.ActivityDate.Year, z.ActivityDate.Month, z.ActivityDate.Day),
                   Subject = z.Subject
               }).ToList();

并且

Query= (from z in ctx.Interactions
        where z.ActivityDate <= StartDateTo
           && z.ActivityDate >= EndDateTo
           && z.Indepth == false
        select new
               {
                   Date = z.ActivityDate.Date,
                   Subject = z.Subject
               }).ToList();

两者都不起作用。

尝试应用字符串方法时

LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression.

5 个答案:

答案 0 :(得分:3)

您可以使用anyDate.ToString("ddMMyyyy");//any preferred format.

不确定这是否是您要找的!

答案 1 :(得分:2)

您的查询返回带有日期和时间的对象。主题属性。

在Date属性中传递DateTime对象。为了显示短日期,你有一个&#34; ToShortDateString()&#34;在约会上发挥作用。

如果您不想使用日期并且更喜欢选择字符串,请在linq查询中进行转换。

如果要返回字符串,请使用此选项:

var q = (from z in ctx.Interactions
        where z.ActivityDate <= StartDateTo && z.ActivityDate >= EndDateTo && z.Indepth == false
        select new { Date = z.ActivityDate.Date.ToShortDateString(), Subject = z.Subject }).ToList();

答案 2 :(得分:1)

ToShortDateString()可能对您有帮助。

Query= (from z in ctx.Interactions
        where z.ActivityDate <= StartDateTo
           && z.ActivityDate >= EndDateTo
           && z.Indepth == false
        select new
               {
                   Date = z.ActivityDate.ToShortDateString(),
                   Subject = z.Subject
               }).ToList();

答案 3 :(得分:1)

您需要在绑定时执行格式化。由于您没有显示实际的绑定代码,因此很难专门解决您的情况,但让我们看看您的查询中会发生什么:

Query= (from z in ctx.Interactions
        where z.ActivityDate <= StartDateTo && z.ActivityDate >= EndDateTo && z.Indepth == false
        select new { Date = z.ActivityDate.Date, Subject = z.Subject }).ToList();

LINQ处理此查询后,生成的Query变量属于List<DateTime>类型。查询的工作方式将返回DateTime的列表,格式如下:

2014-04-23 00:00:00
2014-03-28 00:00:00
etc...

为了绑定此而不是时间值,您需要在绑定时对列表的每个元素(或所需元素)调用ToString() < /强>

假设您使用的是ListBox或类似的东西,您可以写下以下内容:

foreach (var date in myList) //this is the resultant list from the query
{
    listBox1.Items.Add(date.ToString("MM/dd/yyyy");
}

如果您确实绑定到DataSource媒体资源,则需要将List<DateTime>转换为带有格式化值的List<string>

答案 4 :(得分:0)

将日期转换为字符串,如下所示

string stringDate=string.empty;
stringDate=Convert.ToDateTime("2014-04-23 00:00:00").ToShortDateString();

它会输出像 2014年4月23日