0

我有一组试图排序的 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 中的属性进行排序。有小费吗?

4

1 回答 1

1

这会导致错误,因为您正在执行的操作 new BookIndexFormViewModel(b) 无法映射到 SQL。您想在用 BookIndexFormViewModel 包装 Book 之前进行排序。像这样的东西应该在 GetAllBooks() 中工作

return db.Books.OrderBy(x => x.Name).ToList().Select(b => new BookIndexFormViewModel(b));

于 2009-12-23T21:18:03.213 回答