Mon*_*der -2 c# asp.net asp.net-mvc lambda
我正在尝试查询表格,如db.Products.Where(p => p.CategoryID == id):
public ActionResult Index(int id)
{
var products = db.Products.Where(p => p.CategoryID == id);
return View("_ProductsFilterPartial");
}
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误,p.CategoryID而表中的CategoryID是一个coulmnproduct
你能告诉我为什么会这样吗?
我的水晶球告诉我你在Where某个地方的子句中使用赋值运算符,如:
var products = db.Products.Where(p => p.CategoryID = id);
Run Code Online (Sandbox Code Playgroud)
您得到该错误的原因是因为=赋值运算符返回已分配的值,因此您可以链接分配,如下所示:
int i = j = 2;
Run Code Online (Sandbox Code Playgroud)
所以结果p.CategoryID = id是一个可以为空的int(因为它id被隐式转换为a int?以便存储p.CategoryID),所以你的lambda将接受a Product,改变它的CategoryID值,并返回该值.因此拉姆达的类型是Func<Product, int?>,它不能被隐式转换为Func<Product, bool>这就是Where需要.