2011-06-17 4 views
2

J'ai un petit problème dans ma clause where dans l'expression linq ci-dessous. Si je mets le numéro 3 au lieu de department.Id j'obtiens le résultat désiré mais quand j'utilise department.Id je n'obtiens rien dans le resultset.Linq To Entities

Je veux également obtenir un compte pour le nombre de filtres pour ce nom de filtre en utilisant à nouveau la requête en utilisant 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 };  
+1

Avez-vous vérifié que l'instance de département est telle que vous pensez qu'elle devrait l'être après la première instruction linq - c'est-à-dire qu'elle a un 'Id == 3'? –

+0

Je me sens plutôt bête maintenant. J'utilisais le mauvais département dans l'URL RouteData. ça fonctionne maintenant. Mais maintenant, cela fonctionne et vous savez comment je peux obtenir un compte pour mes filtres dans les groupes, par exemple sous le nom de marques serait une marque et qui aurait des filtres avec un nombre de marques dans ce filtre – ONYX

Répondre

2

Promu pour répondre à des commentaires:

Avez-vous vérifié que l'instance du département est que vous pensez qu'il devrait être après la première déclaration de LINQ - à savoir a un Id == 3?

+0

J'ai trouvé le problème que j'utilisais le mauvais RouteData Value désolé tout le monde. pouvez-vous répondre à ma deuxième question dans mes commentaires – ONYX

0

Votre première requête ne trouve aucun department valide et renvoie donc default, ce qui signifie probablement que departmend.Id == 0.