Linq从DateTime可空字段获取日期

时间:2012-01-27 18:35:51

标签: linq

我有以下内容,我只需要获取日期(不是日期时间) ReqDate和RepDeclined都是可以为空的日期时间字段。

    var info = from pr in db.Prog
       join tf in db.In_Lens
       on pr.PID equals tf.PID
       select new
       { ReqDate = String.Format("{0:MM/dd/yyyy}",tf.ReqDate),
         ReqDeclinedDate = tf.ReqDeclined.ToString("MM/dd/yyyy")
       }).ToList()

它不起作用,因为ReqDate和RepDeclined都是可以为空的日期时间字段。 我也试过String.Format,但没有运气。

它说方法没有重载。

2 个答案:

答案 0 :(得分:0)

我只是改变了我的答案..基本上......你需要在新的集合中找回几个日期时间......然后当你使用这些值时,你可以做String.Format()。原因是LINQ归结为SQL,并且没有String.Format()转换器(但是?)。

所以当你遍历结果时,你可以将这些结果转换为属性显示(即String.Format(...))..但是你将无法在一个linq语句中选择并转换结果,你可能能够做到LAMBDA(.ForEach()),它能够遍历结果,但是,它只是一种做我上面所描述的方式。

......据我所知

答案 1 :(得分:0)

你可以试试这个,我认为更优雅

  var info = from pr in db.Prog
       join tf in db.In_Lens
       on pr.PID equals tf.PID
       select new
       { ReqDate = !string.IsNullOrEmpty(tf.ReqDate) ? string.Format("{0:MM/dd/yyyy}",tf.ReqDate) : string.Empty(),
         ReqDeclinedDate = !string.IsNullOrEmpty(tf.ReqDeclined) ? tf.ReqDeclined.ToString("MM/dd/yyyy") : string.Empty()
       }).ToList()