我有一组我试图排序的ViewModel对象。
这是我的ViewModel类的缩写视图:
public class BookIndexFormViewModel
{
//Properties
public Book Book { get; set; }
//Constructor
public BookIndexFormViewModel(Book book)
{
Book = book;
}
这是我的存储库中我实例化我的集合的方法:
public IQueryable<BookIndexFormViewModel> GetAllBooks()
{
return db.Books.Select(b => new BookIndexFormViewModel(b));
}
这是我尝试订购集合的简略视图,这会导致异常。
var books = _bookRepository.GetAllBooks();
books.OrderBy(x => x.Book.Name);
这是抛出的异常:
The member 'TheBibliophile.Controllers.BookIndexFormViewModel.Book' has no supported translation to SQL.
我很难过这个。当我收到此异常时,我不会尝试调用方法,就像我在网上看到的大多数情况一样。我只是想在ViewModel中按属性的属性进行排序。有什么提示吗?
答案 0 :(得分:1)
这会导致错误,因为您正在执行的操作,新的BookIndexFormViewModel(b)无法映射到SQL。在使用BookIndexFormViewModel包装Book之前,您希望使用orderby。像这样的东西应该在GetAllBooks()
中起作用return db.Books.OrderBy(x =&gt; x.Name).ToList()。选择(b =&gt; new BookIndexFormViewModel(b));