如何在LINQ表达式中转换DateTime变量?

时间:2011-06-13 13:38:23

标签: c# asp.net linq datetime

鉴于此表达式:

var q = (from c in db.ContattiTitoliStudio
                     where ...
                     orderby c.Data descending
                     select new
                     {
                         c.ID,
                         Date = c.Data.ToString("MM dd, YYYY"),
                     });

c.Data is nullable,但也有一个不可为空的var是相同的: “...No overload for method 'ToString' takes 1 arguments...

我尝试了nullable,而不是可空,(c.Data!=null)...String.FormatDateTime.Parse等等...但我无法格式化c.Date我想要的方式。

在SQL Server中,我使用datetime作为类型。

如果我使用普通Date = c.Date,则会显示为“01/01/2011 0.0.00”。

4 个答案:

答案 0 :(得分:1)

使用 Nullable(即??运算符) C#中存在的操作

var q = (from c in db.ContattiTitoliStudio
                     where ...
                     orderby c.Data descending
                     select new
                     {
                         c.ID,
                         Date = (c.Data ?? DateTime.MinValue).ToString("MM dd, YYYY"),
                     });

注意:当c.Data的值为null时使用DateTime.MinValue,用于避免null

答案 1 :(得分:1)

你试过这个吗?

Date = c.Data.HasValue ? c.Data.Value.ToString("MM dd, YYYY") : string.Empty

答案 2 :(得分:1)

好的,最后这是解决方案:

var test= from e in db.Employees.ToList() select new {Time= e.Date.ToString()};
来自msdn论坛的

http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/208396f4-0406-41c6-b55f-0d8bb5d14b2c

答案 3 :(得分:0)

您没有告诉我们,但我猜测ContattiTitoliStudio.DataNullable<DateTime>。在这种情况下,你应该说

Date = c.Data.HasValue ? "null" : c.Data.Value.ToString("MM dd, YYYY")