检查字符串数组 1 项是否存在于字符串数组 2 和 return 布尔值中

Check string array 1 items are present in string array 2 and return bool

我有两个数组。我需要如下所示比较它们,结果应该是 bool

Input : 
Example 1
---------
stringArray1 = "one","five"
stringArray2 = "two","one" ,"three","five"
Result = true

Example 2
---------
stringArray1 = "one","five"
stringArray2 = "two","three" ,"four","five"
Result = false (As "one" is not present in array2)

代码:

string[] stringArray1 = getDataTabledFromSP.Columns.Cast<DataColumn>()
    .OrderBy(x => x.ColumnName)
    .Select(x => x.ColumnName)
    .ToArray();

string[] stringArray2 = fetchColumnDetailsOfClientById
    .OrderBy(x => x.ColumnName)
    .Select(myLine => myLine.ColumnName).ToArray();

那么当 stringArray2 包含 stringArray1 中的所有项目时,您想要 returns true 的东西吗? 应该这样做:

// Not any string which is not contained in the stringArray2
!stringArray1.Any(s => !stringArray2.Contains(s));

你可以试试设置算术:

 bool result = !stringArray1.Except(stringArray2).Any();

我们从 stringArray1 减去 stringArray2 然后检查我们是否有任何项目(这是 stringArray1 中不存在的项目stringArray2).

编辑: 如果 stringArray1stringArray2 可以有 重复项 应该考虑(例如所有三个相等的项目应该在stringArray2):

中找到
  bool result = !stringArray1
    .GroupBy(item => item)
    .Select(chunk => Tuple.Create(chunk.Key, chunk.Count()))
    .Concat(stringArray2
       .GroupBy(item => item)
       .Select(chunk => Tuple.Create(chunk.Key, -chunk.Count()))
     )
    .GroupBy(item => item.Item1)
    .Select(chunk => chunk.Sum(item => item.Item2))
    .Any(item => item > 0);

如果您想检查一个数组的所有元素是否存在于另一个数组中,您可以使用 Linq All() 函数,或者 Any() 函数如

stringArray2.All(x => stringArray1.Contains(x))