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 をラップする前に orderby したい。このようなものは GetAllBooks() 内で動作するはずです

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

于 2009-12-23T21:18:03.213 に答える