我在下面的linq表达式中的where子句中遇到了一个小问题。如果我把数字3而不是department.Id我得到了所需的结果,但是当我使用department时。我得不到结果集中的任何内容。
我还希望使用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 };
答案 0 :(得分:2)
促请回答评论:
您是否在第一个linq语句之后检查了部门实例是否符合您的想法 - 即有Id == 3
?
答案 1 :(得分:0)
您的第一个查询未找到任何有效的department
,因此返回default
,这很可能意味着departmend.Id == 0
。