2009-05-18 88 views
2

假設我有以下如何使用LINQ編寫ContainsAll查詢? (C#LINQ到SQL)

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

和一張桌子命名db.Numbers

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

填充

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}); 

我想所有與相關聯的所有號碼都在mustHave變量中。例如,查詢必須返回id = 8,但不是id = 9。真實情況要複雜得多,並且使用Linq-To-Sql對數據庫進行查詢。

回答

-1

試試這個:

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

謝謝回答,但恐怕我需要做的是在一個查詢,不使用循環。 – 2009-05-18 19:28:03

-1

那麼,如果你正在做的事情在LINQtoSQL有一個DataContext,試試這個:

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

您的查詢將返回與至少一個mustHave數組項目關聯的所有id。我真正想做的是一個查詢,它返回與ALL mustHave數組項關聯的id。 – 2009-05-18 19:30:26