2009-10-22 8 views
0

Je suis sûr que c'est simple, mais je suis très nouveau pour les requêtes d'entité et a probablement déjà été demandé.Recherche base de données en utilisant une collection d'objets entité

ce que je dois à la recherche de toutes les affaires dans ma base de données où ils ont une catégorie qui existe dans une collection de catégories que j'ai construit

IList<businessCategory> busCatList; 

busCatList.Add(businessCategory.CreatebusinessCategory(1,"Tourism")); 
busCatList.Add(businessCategory.CreatebusinessCategory(2,"Accomidation")); 
busCatList.Add(businessCategory.CreatebusinessCategory(3,"Entertainment")); 
busCatList.Add(businessCategory.CreatebusinessCategory(4,"Bar")); 
busCatList.Add(businessCategory.CreatebusinessCategory(5,"Club")); 

var items = Data.DBEntities.business.Where(b.businessCategory.Contains(busCatList)); 

Je sais que la syntaxe de la requête est erronée, mais essentiellement ce que je ce que la requête pour le faire sortir toutes les affaires où il a une catégorie correspondant à l'une des catégories dans le busCatLsit

dans ma base de données d'une entreprise peut être liée à de nombreuses catégories

dans SQL je ferais

SELECT name FROM business 
join businessCategoryRlnshp on businessCategoryRlnshp.businessID = business.ID 
where categoryID in (1,2,3) 
+0

Cette question peut vous aider: http://stackoverflow.com/questions/374267/contains-workaround-using-linq-to-entities –

+0

Dans ma base de données j'ai une table d'affaires une table BusinessCategoryRelationship et une table de catégorie, une entreprise peut être attaché à plusieurs catégories. Je souhaite être en mesure de récupérer une activité de collecte basée sur une collection d'objets de catégorie ou une liste d'ID de catégorie. Je cherchais depuis deux jours pour cette requête simple mais ne peux rien obtenir pour retourner l'affaire – Simon

Répondre

0

juste essayer de lire votre esprit ici;)

var items = busCatList.Where(businessCategory => b.businessCategory.Contains(businessCategory)); 
+0

Ce que je cherche est de savoir si je peux rechercher une collection d'objets entité, avec une autre collection d'objets et si vouloir sortir le parent. Lorsqu'une entreprise (parent) possède une collection de catégories et que busCatList est une collection de catégories que je recherche, donc si une entreprise a une catégorie qui existe dans busCatList, alors je veux la/les entreprise (s) renvoyée (s) comme une collection – Simon

0

Je ne peux pas vraiment imaginer une solution agréable dans LINQ - je veux dire autre que une sorte d'effectuer la requête plusieurs fois - un pour chaque catégorie d'entreprise.

Toutefois, dans SQL Server 2008, il existe une nouvelle fonctionnalité - transmettre une variable de table à la procédure stockée. Cela peut être fait à partir du code en passant un DataSet avec 1 DataTable en tant que paramètre. Vous pouvez bien sûr écrire une méthode d'extension pour IEnumerable afin de le convertir en un DataSet similaire aux méthodes ToList() ou ToDictionary(). Les entités retournant la procédure stockée peuvent être utilisées dans EntityFramework 1.0, ce qui devrait théoriquement faire cliquer le puzzle. PS> Il existe également une solution utilisant E-SQL et probablement des méthodes de création de requêtes.

Questions connexes