Неверные аргументы в MVC3

У меня проблемы с получением этого кода для компиляции. Я новичок в MVC/Stackru/ программирования и пытаюсь следовать учебнику. Кроме того, я попытался найти кое-что и увидел варианты со значениями Nullable, но мне не повезло.

public class ReviewsController : Controller
{
    OdeToFoodDB _db = new OdeToFoodDB();
    //
    // GET: /Reviews/

    //default action
    public ActionResult Index()
    {
        var model = _db.Reviews.FindTheLatest(3);
        return View(model);
    }

Вот определение для FindTheLatest

public static IEnumerable<RestaurantReview> FindTheLatest(this IList<RestaurantReview>        
reviews, int numberOfReviews)
    {
        return reviews.OrderByDescending(r => r.Created)
                      .Take(numberOfReviews);
   } 

Вот также определение для OdeToFood, если это необходимо.

namespace OdeToFood.Models
{
public class OdeToFoodDB : DbContext
{
    public DbSet<Restaurant> Restaurants { get; set; }
    public DbSet<RestaurantReview> Reviews { get; set; }
}
}

Я получаю сообщение об ошибке: "System.Data.Entity.DbSet" не содержит определения "FindTheLatest" и "лучшая перегрузка метода расширения" OdeToFood.Queries.RestaurantReviewQueries.FindTheLatest(System.Collections.Generic.IList, int) имеет неверные аргументы

1 ответ

Решение

Измените метод расширения для использования IEnumerable<T>общий базовый тип, общий для обоих DbSet<T> а также List<T>:

public static IEnumerable<RestaurantReview> FindTheLatest(
           this IEnumerable<RestaurantReview> reviews, int numberOfReviews)
Другие вопросы по тегам