我正在努力与linq争夺日期时间。
如果记录小于当前日期,我正在尝试获取信息
以下是代码:
public ActionResult _Events()
{
DateTime dt = DateTime.Now.Date;
var DocsFirst =(from t in db.tble_presentation
where dt >= EntityFunctions.TruncateTime(t.presentation_date)
select t).OrderByDescending(t => t.presentation_date).Take(2);
return PartialView(new Newsmodel
{
DocsList_list1 = DocsFirst,
});
}
但我收到以下错误
提前谢谢 碎甲弹无法将类型'System.Linq.IQueryable'隐式转换为 'System.Linq.IOrderedEnumerable'。存在显式转换 (你错过了演员吗?)
答案 0 :(得分:1)
看起来DocsList_List1
的类型为IOrderedEnumerable
(正如@Emre在评论中指出的那样)。要使代码编译,您必须将DocsList_list1
的声明更改为兼容类型(可能是IEnumerable
)或将linq查询的结果更改为IOrderedEnumerable
。一种(有点难看)做后者的方法:
var DocsFirst = (from t in db.tble_presentation
where dt >= EntityFunctions.TruncateTime(t.presentation_date)
select t).Take(2).AsEnumerable()
.OrderByDescending(t => t.presentation_date);
它有些难看,因为它在内存中执行排序而不是让数据库执行此操作,但由于Take(2)
放在AsEnumerable()
之前,它仍然只读取了两个请求的元素。