0

有没有办法让 linq 查询只返回日期时间的日期部分。我已经尝试了所有我能找到的建议,所有这些建议都会在运行时产生错误。这只是查询的选择部分以及每条错误消息(查询的其余部分效果很好):

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

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

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

SQL Server Compact 无法识别该函数。[ 函数名称 = 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 to Entities 无法识别方法“System.String ToString()”方法,并且该方法无法转换为存储表达式。

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

LINQ to Entities 无法识别方法 'System.String Concat(System.Object, System.Object)' 方法,并且此方法无法转换为存储表达式。

谢谢你的帮助!

4

1 回答 1

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 }); 

它将从 db 中选择整个日期时间,并将仅日期选择移动到 LINQ 到对象查询中。

于 2013-09-21T19:11:34.357 回答