在ASP.net MVC中使用Lambda的问题

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

在此输入图像描述

你能告诉我为什么会这样吗?

D S*_*ley 5

我的水晶球告诉我你在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需要.