2009-05-18 8 views
2

Supposons que je donne les résultats suivantsComment écrire une requête ContainsAll en utilisant LINQ? (C# LINQ-TO-SQL)

var mustHave = new int [] { 1, 2 } 

et une table nommée db.Numbers

public class Number 
{ 
    public int id; 
    public int number; 
} 

peuplée avec

Numbers.add(new Number(){id=8,number=1}); 
Numbers.add(new Number(){id=8,number=2}); 
Numbers.add(new Number(){id=8,number=3}); 
Numbers.add(new Number(){id=9,number=1}); 
Numbers.add(new Number(){id=9,number=3}); 

Je veux obtenir tous ids qui sont associés à tous les numéros dans la variable mustHave. Par exemple, la requête doit renvoyer id = 8 mais pas id = 9. Le cas réel est beaucoup plus compliqué et fait la requête contre une base de données avec Linq-To-Sql.

Répondre

-1

Essayez ceci:

var numbers = Numbers.FindAll(n=>n.id=8); 
var mustHave= new int[numbers.Count][2]; 
int counter = 0;` 
foreach(var number in numbers) 
{ 
    mustHave[counter][0]=number.id; 
    mustHave[counter][1]=number.number; 
    counter++; 
} 
+0

Merci d'avoir répondu mais je crains que je dois le faire en une seule requête, sans utiliser de boucles. –

-1

Eh bien, si vous faites quelque chose dans LinqToSql avec un DataContext, essayez ceci:

var mustHave = new int [] { 1, 2 }; 
var items = 
    from x in DataContext.SomeTable 
    where mustHave.Contains(x.SomeProperty) 
    select x; 
+0

Votre requête retournera tous les identifiants associés à au moins un des éléments du tableau mustHave. Ce que je veux vraiment faire est une requête qui retourne les identifiants qui sont associés à TOUS les éléments du tableau mustHave. –

Questions connexes