2011-06-17 2 views
2

У меня есть небольшая проблема в моем выражении where в выражении linq ниже. Если я ставлю номер 3 вместо отдела. Я получаю желаемый результат, но когда я использую department.Id, я ничего не получаю в наборе результатов.Linq To Entities

Я также хочу получить число для количества фильтров для этого имени фильтра, используя запрос снова, используя различные.

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 };  
+1

Вы проверили, что экземпляр отдела, как вы думаете, должен быть после первого оператора linq, т.е. имеет идентификатор 'Id == 3'? –

+0

Теперь я чувствую себя довольно глупо. Я использовал неправильный отдел в url RouteData. он работает сейчас. Но теперь это исправлено, и он работает, вы знаете, как я могу получить количество моих фильтров в группах, например, под названием «Бренды» будет брендом, и у него будут фильтры со счетчиком следующего количества того, сколько брендов находится в этом фильтре. – ONYX

ответ

2

Назначен ответить от комментариев:

Вы проверили, что экземпляр отдел, как вы думаете, это должно быть после первого заявления Linq - т.е. имеет Id == 3?

+0

Я нашел проблема в том, что я использовал неправильное значение RouteData, извините всех. можете ли вы ответить на мой второй вопрос в моих комментариях? – ONYX

0

Ваш первый запрос не находит действительного department и поэтому возвращает default, что, скорее всего, означает, что departmend.Id == 0.