#c# #linq
#c# #linq
Вопрос:
Любая помощь очень ценится, ребята!
в GetProductByID я получаю сообщение об ошибке «int не содержит определения для FirstOrDefault».
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using HomebaseSystemNew.Models;
namespace HomebaseSystemNew.Controllers
{
public class ProductRepository
{
public ProductsController GetProductID(int Pid)
{
Product db = new Product();
return db.Pid.FirstOrDefault(db => db.Pid == Pid);
}
}
}
Комментарии:
1. Ваша проблема не имеет ничего общего с MVC3. Вы просто
FirstOrDefault
неправильно используете.db.Pid
являетсяint
, но для работы он должен быть перечислимымFirstOrDefault
.
Ответ №1:
Также вам необходимо добавить using System.Пространство имен Linq для доступа к этим методам.
Ответ №2:
Звучит очень маловероятно, что вы хотите начать с Product
экземпляра. Правильный код, скорее всего, будет выглядеть так:
public Product GetProductByID(int id)
{
return new DbContext().Products
.FirstOrDefault(p => p.Pid == id);
}
В конце концов, вы не можете логически перейти от одного продукта к коллекции продуктов, не говоря уже об одном идентификаторе продукта к коллекции . Вы не сказали, где находятся ваши данные или что-то в этом роде, но вам нужно обратиться FirstOrDefault
к коллекции продуктов.
Ответ №3:
Из вашего кода видно, что db.Pid
это целое число (Int32), а не an IEnumerable<T>
.
LINQ
Операторы определены на IEnumerable
, а не Int32
.
По умолчанию это будет 0
.
Ответ №4:
Well int
не содержит определения для FirstOrDefault
, потому что это не тип списка.
Для этого вам понадобится список целых чисел:
public ProductsController GetProductID(List<int> Pids)
{
....
}
или, что более вероятно
public ProductsController GetProductID(int Pid)
{
Product db = new Product();
return db.Products.FirstOrDefault(db => db.Pid == Pid);
}
предполагая, что у вас есть таблица, вызываемая Product
в вашей базе данных.
Ответ №5:
FirstOrDefault
это метод расширения для IEnumerbale или IQueryable, вы пытаетесь вызвать его из целого числа.