2010-06-11 7 views
2

Comment puis-je utiliser LINQ-to-sql à une recherche comme celui-ci:linq ou contient?

où obj.id est égal à une des opérations suivantes {1,2,3,4}

Je suppose que je pourrais utiliser la dans ou peut-être contient? Où obj.id dans Enumerable.Range ((int) myEnum.Start, (int) myEnum.End))?

Répondre

5

Vous pouvez utiliser .Contains(), comme ceci:

var list = new List<int> { 1, 2, 3, 5 }; 
var result = from s in DB.Something 
      where list.Contains(s.Id) 
      select s; 

Cela traduit à une obtenir sous forme de paramétrés:

WHERE Id IN (1, 2, 3, 5) 
+0

Salut Nick. Qu'en est-il si vous remplacez var list = new Liste {1, 2, 3, 5}; avec une liste d'objets d'un certain type qui a des membres comme ID et Nom et vous souhaitez utiliser l'ID de membre dans les Contains? Il ne peut pas démarrer avec list.Contain plus. Comment écririez-vous cette requête dans ce cas? Je demande parce que j'ai cette situation et je ne sais pas comment la résoudre. Au lieu de la liste des objets et de la liste J'ai deux listes d'objets et je veux utiliser leurs membres ID. Cordialement Mariusz – Mariusz

0
var myCustomers = new short[] {1,2,3,4}; 
var foo = db.Customers.Where(c=> myCustomers.Contains(c.ID)); 
+0

@Johannes: attention de ne pas coller cet exemple de code dans votre application de production! –