Linq 获取最新日期查询

Linq Get Latest Date Query

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

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

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


        DateTime dtPlus1Year = Convert.ToDateTime(latestDt);

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

我想如果你使用

DateTime.Parse(item.dateAsString)

你的问题应该已经解决了。

您可以试试这个来获取最新插入数据库的日期顺序列表。

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

您定义的 LINQ 查询表达式 return 是具有 属性 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);  
}

否则,如果您想了解更多关于可能 return 多个结果的查询语法的行为,您可以简化为以下 returns DateTime 对象的集合(即 IEnumerable) 而不是:-

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