任何帮助都非常感谢大家!
在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);
}
}
}
答案 0 :(得分:13)
此外,您需要添加使用System.Linq 命名空间来访问这些方法。
答案 1 :(得分:3)
您希望启动并使用Product
实例。正确的代码更像是:
public Product GetProductByID(int id)
{
return new DbContext().Products
.FirstOrDefault(p => p.Pid == id);
}
毕竟,您没有从单个产品到逻辑上获取产品集合,更不用说从单个产品ID到集合了。您尚未说明数据的位置或类似内容,但您需要将FirstOrDefault
应用于产品的集合。
答案 2 :(得分:0)
从您的代码中可以看出db.Pid
是一个整数(Int32),而不是IEnumerable<T>
。
LINQ
运算符在IEnumerable
上定义,而不是Int32
。
默认情况下,它为0
。
答案 3 :(得分:0)
好int
不包含FirstOrDefault
的定义,因为它不是列表类型。
您需要一个可以使用的int列表:
public ProductsController GetProductID(List<int> Pids)
{
....
}
或更可能
public ProductsController GetProductID(int Pid)
{
Product db = new Product();
return db.Products.FirstOrDefault(db => db.Pid == Pid);
}
假设您的数据库中有一个名为Product
的表。
答案 4 :(得分:0)
FirstOrDefault
是IEnumerbale或IQueryable上的扩展方法,您试图从整数调用它。