2009-12-23 53 views
0

我有我试图排序的ViewModel对象的集合。C#MVC ViewModel属性OrderBy异常

这是我的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

这会导致错误,因为您所做的新BookIndexFormViewModel(b)无法映射到SQL。您希望在使用BookIndexFormViewModel封装Book之前进行排序。这样的东西应该可以在GetAllBooks()

返回db.Books.OrderBy(x => x.Name).ToList()。选择(b => new BookIndexFormViewModel(b));