2013-09-21 52 views
0

有没有办法让linq查询返回日期时间的日期部分。我尝试了所有我能找到的建议,所有这些建议都会在运行时产生错误。这是每个错误消息一起查询的只是选择部分(查询其余的伟大工程):从SQL Server CE日期时间使用linq-to-entities返回唯一日期

select new { d.id, d.date.Value.Date }; 

指定类型的成员“日期”不支持LINQ到实体。仅支持初始化程序,实体成员和实体导航属性。

select new { d.id, date=EntityFunctions.TruncateTime(d.date) }; 

的功能不受SQL Server精简认可。 [功能= TRUNCATETIME,数据类型(如果已知)=名称]

select new { d.id, date=d.date.Value.Month + "/" + d.date.Value.Day }; 

无法转换的类型 'System.Int32' 为类型 'System.Object的'。 LINQ to Entities仅支持投射实体数据模型基元类型。

select new { d.id, date=d.date.Value.Month.ToString() + "/" + d.date.Value.Day.ToString() }; 

LINQ实体无法识别方法“System.String的ToString()”方法,和这种方法不能被翻译成表达商店。

select new { d.id, date=String.Concat(d.date.Value.Month, "/")}; 

LINQ实体无法识别方法 'System.String CONCAT(System.Object的,System.Object的)' 方法,和这种方法不能被翻译成表达商店。

感谢您的帮助!

回答

0
select new { 
    d.id, 
    date = SqlFunctions.DatePart("m", d.date) + "/" + SqlFunctions.DatePart("d", d.date) 
}; 

它会给你一个字符串month/day模式。

但我会去如下:

(from r in row 
... 
select new { d.id, date = d.date.Value }) 
.AsEnumerable() 
.Select(x => new { x.id, x.date.Date }); 

它会选择从数据库全部datetime和移动日期,只选择到LINQ到对象查询。

+0

SqlFunctions.DatePart():该函数只能从LINQ调用到实体。第二个返回日期和时间,所有时间都设置为12:00:x.date.Value.Date – user2802450

+0

This Works!感谢百万MarcunJuraszek !!。Select(x => new {x.id,date = x.date.Value.ToShortDateString()}); – user2802450

相关问题