我正在尝试根据下面的控制器获取最新日期,但遇到此错误:
“无法将类型为“System.Data.Entity.Infrastructure.DbQuery1[<>f__AnonymousType20
1[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 吗?
答案 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);