如何檢查array2
是否爲array1
的子集?換句話說,我想檢查array2
的所有元素是否存在於array1
中?我想要Lambda
或Linq
中的解決方案。驗證陣列是否存在於Lambda或Linq中
int[] array1 = {6, 3, 1, 4, 5, 2};
int[] array2 = {1, 2, 3};
如何檢查array2
是否爲array1
的子集?換句話說,我想檢查array2
的所有元素是否存在於array1
中?我想要Lambda
或Linq
中的解決方案。驗證陣列是否存在於Lambda或Linq中
int[] array1 = {6, 3, 1, 4, 5, 2};
int[] array2 = {1, 2, 3};
如果我明白你的問題:
using System.Linq;
if (!array2.Except(array1).Any())
{
...validated!
}
非常感謝! – spajce
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
這是正確的,因爲並非array1中的所有元素都存在於array1中。 – Alessandro
另一種簡單的LINQ
,您可以使用All
在array1
檢查是否array2
所有項目:
if (array2.All(array1.Contains))
{
// array2 is subset of array1
}
如果您使用給定的函數,並且元素與我的第一個示例相似,那麼結果爲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
@spajce:'INT []數組1 = { 6,3,1,4,5,2}; int [] array2 = {11,1,2,3};'這當然是錯誤的,因爲11不屬於array1 –
與嘗試,
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;
感謝您對我枯燥的句子和語法錯誤的修改和更正:D – spajce