Linq To Entities

时间:2011-06-17 08:08:19

标签: c# asp.net linq

我在下面的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 };     

2 个答案:

答案 0 :(得分:2)

促请回答评论:

您是否在第一个linq语句之后检查了部门实例是否符合您的想法 - 即有Id == 3

答案 1 :(得分:0)

您的第一个查询未找到任何有效的department,因此返回default,这很可能意味着departmend.Id == 0