2012-09-12 47 views
0

如何檢查array2是否爲array1的子集?換句話說,我想檢查array2的所有元素是否存在於array1中?我想要LambdaLinq中的解決方案。驗證陣列是否存在於Lambda或Linq中

int[] array1 = {6, 3, 1, 4, 5, 2}; 
int[] array2 = {1, 2, 3}; 
+0

感謝您對我枯燥的句子和語法錯誤的修改和更正:D – spajce

回答

5

如果我明白你的問題:

using System.Linq; 

if (!array2.Except(array1).Any()) 
{ 
    ...validated! 
} 
+0

非常感謝! – spajce

+0

hello @Alessandro從array1和array2上面得到的結果是「true」 當我測試下面元素的數組..結果是「false」任何想法?謝謝 int [] array1 = {6,3,1,4,5,2}; int [] array2 = {11,12,6,4,3}; if(!array2.Except(array1).Any()) Console.WriteLine(「true」); } else { Console.WriteLine(「false」); } – spajce

+0

這是正確的,因爲並非array1中的所有元素都存在於array1中。 – Alessandro

1

另一種簡單的LINQ,您可以使用Allarray1檢查是否array2所有項目:

if (array2.All(array1.Contains)) 
{ 
    // array2 is subset of array1 
} 
+0

如果您使用給定的函數,並且元素與我的第一個示例相似,那麼結果爲true,但如果嘗試按任何順序更改元素,則結果爲false。試試這個 'int [] array1 = {6,3,1,4,5,2}; int [] array2 = {11,1,2,3}; 變種S = array2.All(array1.Contains);' 正確答案是從@Alessandro如果'(array2.Intersect(數組1)。任何())' – spajce

+1

@spajce:'INT []數組1 = { 6,3,1,4,5,2}; int [] array2 = {11,1,2,3};'這當然是錯誤的,因爲11不屬於array1 –

1

與嘗試,

int[] array1 = { 6, 3, 1, 4, 5, 2 }; 
int[] array2 = { 1, 2, 3 }; 

bool isSubset = array2.Count(o => array1.Contains(o)).Equals(array2.Count()) ? true : false; 
相關問題