2010-06-23 7 views
1

Dans le code suivant, value est une chaîne avec des valeurs séparées par des virgules dont chacune est un nom de type. Je veux obtenir les entités qui ont été liées avec l'un de ces types ou ayant un de ces types dans leur description. J'ai écrit le linq à sql servery suivant et je reçois toujours 0 quand il y a certainement des entités avec ces types. Peux-tu aider s'il te plait?Aide sur la requête Linq to sql

string[] allValues = value.Split(','); 

var allTypes = ModelFactory.GetRepository<IRestaurantTypeRepository>().GetAllTypes(); 

return from ent in matchingEntities 
     from typeLink in ent.EntityRestaurantTypeLinks 
     join type in allTypes on typeLink.RestaurantTypeId equals type.RestaurantTypeId 
     where allValues.Contains(typeLink.RestaurantType.TypeName) 
     || (
      allValues.Contains(type.TypeName) 
      && ent.Description.Contains(type.TypeName) 
      ) 
     select ent; 

EDIT

J'ai divisé la déclaration en deux. Après cela, la deuxième déclaration est devenue comme ça.

from ent in matchingEntities 
         where allValues.AsEnumerable().Any(va =>  
         ent.Description.Contains(va)) 
         select ent; 

Dans ce cas, allValues ​​est le type chaîne []. ent.Description est un contenu de chaîne. Je veux juste obtenir les entités dont la description contient n'importe quelle valeur de toutes les valeurs. La déclaration ci-dessus ne donne pas de résultats.

Répondre

1

D'après votre description du problème, il semble que vous dire or, au lieu de and:

return from ent in matchingEntities 
     from typeLink in ent.EntityRestaurantTypeLinks 
     join type in allTypes on typeLink.RestaurantTypeId equals type.RestaurantTypeId 
     where allValues.Contains(typeLink.RestaurantType.TypeName) 
      || allValues.Contains(type.TypeName) 
      || ent.Description.Contains(type.TypeName) 
     select ent; 

Sinon, la requête que vous avez retourne maintenant « toutes les entités qui ont été liés à l'un de ces types ou (est un de ces types et a un de ces types dans leur description) "

+0

@lc, j'ai essayé votre solution et je reçois toujours 0 résultats. – mohang

+0

@mohang, Etes-vous peut-être confronté à des problèmes de sensibilité à la casse alors? Je le vois, il devrait fonctionner. De plus, vous avez coché 'allValues' à l'exécution et les entités sont renvoyées ok si vous ne filtrez pas avec une clause where? –