Выполнить условие над списком \ набором элементов - PullRequest
0 голосов
/ 20 марта 2020

Допустим, у меня есть список элементов: ["A", "B", "C", "X"] и условие Dynami c, которое необходимо проверить по этому списку, например: "A" && "D", поэтому «A» и «D» должны быть частью списка для выполнения условия.

Большинство команд IEnumerable применяют Func или Predicate к отдельным элементам, в то время как в моем случае я хочу, чтобы условие применялось ко всему списку.

Как я могу проверить, что данный список соответствует условию динамического c, list.Meets(condition)?

Я пытался преобразовать строковое условие в Expression, но решение становится слишком сложным.

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

В итоге я создал небольшой анализатор условий. Синтаксический анализатор может обрабатывать строковые условия, содержащие выражения And или Or logi c, а также обрабатывать скобки.

здесь есть ссылка на решение: https://github.com/aberbegall/ConditionParser

0 голосов
/ 21 марта 2020

Вы можете сделать что-то подобное, используя Linq

public bool IsMatch(char[] arrToCheck, char[] condition)
{
    return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}

Вы также можете использовать метод расширения

public static bool IsMatch(this char[] arrToCheck, char[] condition)
{
    return condition.All(ch => arrToCheck.IndexOf(ch) > -1);
}

, чтобы вы могли использовать его следующим образом

myArray.IsMatch(['A', 'D']);
...