2009-12-23 60 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));