C#MVC ViewModel属性OrderBy异常

时间:2009-12-23 20:17:27

标签: c# linq-to-sql model-view-controller viewmodel

我有一组我试图排序的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中按属性的属性进行排序。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

这会导致错误,因为您正在执行的操作,新的BookIndexFormViewModel(b)无法映射到SQL。在使用BookIndexFormViewModel包装Book之前,您希望使用orderby。像这样的东西应该在GetAllBooks()

中起作用

return db.Books.OrderBy(x =&gt; x.Name).ToList()。选择(b =&gt; new BookIndexFormViewModel(b));