检查字符串数组 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
).
编辑: 如果 stringArray1
和 stringArray2
可以有 重复项 应该考虑(例如所有三个相等的项目应该在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))
我有两个数组。我需要如下所示比较它们,结果应该是 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
).
编辑: 如果 stringArray1
和 stringArray2
可以有 重复项 应该考虑(例如所有三个相等的项目应该在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))