Проверьте строковый массив 1, элементы присутствуют в строковом массиве 2 и возвращают bool - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть два массива.Мне нужно сравнить их, как показано ниже, и результат должен быть 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();

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Вы можете попробовать установить арифметику:

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

мы вычитаем stringArray2 из stringArray1, а затем проверить, есть ли у нас какой-либо элемент (который являетсяэлемент 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);
0 голосов
/ 28 февраля 2019

Вы можете использовать функцию Linq All(), если хотите проверить, присутствуют ли все элементы одного массива в другом, или функцию Any(), например

stringArray2.All(x => stringArray1.Contains(x))
0 голосов
/ 28 февраля 2019

Итак, вы хотите что-то, что возвращает true, когда stringArray2 содержит каждый элемент в stringArray1?Это должно сделать:

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