2012-01-27 39 views
0

我有以下的地方我只需要从 得到日期(而不是日期时间)ReqDate和RepDeclined都是可空的日期时间字段。Linq从DateTime获得日期时间可空字段

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

通常,您需要'nullableDate.Value.ToString(格式)',但我不确定这将与EF(或任何您使用的提供程序)一起工作。在普通代码中,您需要确保'nullableDate'不为空,否则可以使用'nullableDate.GetValueOrDefault()'而不是Value。 – 2012-01-27 18:39:37

回答

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() 
0

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

所以当你循环遍历结果时,你可以转换这些结果来显示房产(即String.Format(...))..但是你将无法选择出来并将结果转换成一个linq语句,你可能可以做到这一点,它可以迭代通过结果,但是,它只是一个简单的方式做我上面描述的..

...据我所知

+0

谢谢。我得到以下内容:LINQ to Entities不识别方法'System.String Format(System.String,System.Object)'方法,并且此方法不能转换为存储表达式。“} – 2012-01-27 19:58:32

+0

哦,没错。 。我不认为你可以在查询中做很多格式化,因为它会尝试将它转换为SQL – hanzolo 2012-01-27 20:05:17