0

我正在努力使用 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”。存在显式转换(您是否缺少演员表?)

提前谢谢

4

1 回答 1

2

它看起来像是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)放置在 before 中,它仍然只读取两个请求的元素AsEnumerable()

于 2013-05-12T18:43:56.777 回答