我在下面的linq表达式中的where子句中有一个小问题。如果我输入数字3而不是department.Id,我会得到想要的结果,但是当我使用department.Id时,我在结果集中什么也得不到。
我还希望再次使用distinct查询来获得该过滤器名称的过滤器数量的计数。
var dept = Page.RouteData.Values["department"];
var department = (from d in db.Departments
where d.Name.Replace(" ", "-") == dept
select new {d.Id, d.Name}).FirstOrDefault();
var query = from p in db.Products
join f in db.ProductFilters on p.Id equals f.ProductId into filters
from x in filters.Where(x => x.Product.DepartmentId == department.Id
/* if == 3 it works */)
select new { x.Name, x.Id }; 发布于 2011-06-17 16:25:21
从评论升级到答案:
您是否检查过部门实例在第一个linq语句之后应该是您认为的位置--即有一个Id == 3
发布于 2011-06-17 16:36:30
您的第一个查询没有找到任何有效的department,因此返回default,这很可能意味着departmend.Id == 0。
https://stackoverflow.com/questions/6383031
复制相似问题