Linq 获取最新日期查询

时间:2021-03-30 06:20:21

标签: asp.net-mvc linq datetime asp.net-mvc-4 max

我正在尝试根据下面的控制器获取最新日期,但遇到此错误:

“无法将类型为“System.Data.Entity.Infrastructure.DbQuery1[<>f__AnonymousType201[System.Nullable`1[System.DateTime]]]”的对象转换为类型“System.IConvertible”。”< /p>

       var latestDt = from n in db.Books
                       where n.id == id
                       select new { Date = n.dtBookBorrowed};


        DateTime dtPlus1Year = Convert.ToDateTime(latestDt);

我可以知道如何在 linq 中获取列 latestDate 吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试通过最新插入到 db 来获取日期顺序列表。

var latestDt = db.Books.Where(n => n.id == id).OrderByDescending(x => x.dtBookBorrowed).Select(x => x.dtBookBorrowed).ToList();

答案 1 :(得分:0)

我想如果你使用

DateTime.Parse(item.dateAsString)

你的问题应该得到解决。

答案 2 :(得分:0)

您定义的 LINQ 查询表达式返回一组具有属性 Date 的匿名对象,尽管可能只有一个记录匹配,因为 ID 是唯一的。

在您的情况下,我们只需要可以解析为 DateTime 的目标字段,因此流利语法的替代方法如下:-

var book = db.Books.SingleOrDefault(book => book.id == id); // gets matching book otherwise null

if (book != null)
{
  var borrowedDate = Convert.ToDateTime(book.dtBookBorrowed);  
}

否则,如果您想了解更多关于可能返回多个结果的查询语法的行为,您可以简化为以下返回DateTime对象(即IEnumerable)的集合:-< /p>

IEnumerable<DateTime> borrowedDates =
  from n in db.Books
  where n.id == id
  select Convert.ToDateTime(n.dtBookBorrowed);