Хранить математический оператор в переменной - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю приложение на C # MVVM.У меня простой вопрос.Есть ли возможность хранить математический оператор в переменной?У меня есть такой код:

public ICollectionView FilteredCollection
            {
                get
                {
                    return filteredCollection;
                }
                set
                {
                    filteredCollection = value;
                    OnPropertyChanged("FilteredCollection");
                }
            }



 FilteredCollection.Filter = x => (
                    (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                    && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || ((Employee)x).EmployeeSalary == Convert.ToInt32(DynamicSearchEmployeeSalary))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))
                    );

Чего я хочу достичь: В четвертой строке (DynamicSearchEmployeeSalary) математический оператор должен зависеть от следующих условий:

if (IsPressedEqual == true)
VARIABLE = "=="
if (IsPressedLess == true)
VARIABLE = "<"
if (IsPressedGreater == true)
VARIABLE = ">"
if (IsPressedLess == true && IsPressedEqual == true)
VARIABLE = "<="
if (IsPressedGreater == true && IsPressedEqual == true)
VARIABLE = ">="

Сценарий:

Например, я помещаю в текстовое поле значение, например, 10000, затем нажимаю кнопку с оператором "=".В результате я хочу получать сотрудников с зарплатой, равной 10000. Затем я нажимаю «>».И у меня есть сотрудники с зарплатой больше и равной 10000.

enter image description here

 FilteredCollection.Filter = x => (
                        (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                        && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                        && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || ((Employee)x).EmployeeSalary VARIABLE Convert.ToInt32(DynamicSearchEmployeeSalary))
                        && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                        && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))

1 Ответ

0 голосов
/ 26 ноября 2018

Я сделал простой движок, основанный на правилах ... Я думаю, он поможет вам в вашей проблеме ...

пожалуйста, найдите его как пакет nuget здесь: https://www.nuget.org/packages/IbnSherien.RuleBasedEngine/

вы можете создать правило вроде этого:

var rule = RuleEngine.CreateRule<Employee>()
                     .If<Employee>(e => e.EmployeeSalary).GreaterThan(DynamicSearchEmployeeSalary)
                     .Validate();

FilteredCollection.Filter = x => (
                    (string.IsNullOrEmpty(DynamicSearchEmployeeName) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeName))
                    && (DynamicSearchEmployeeID == null || ((Employee)x).EmployeeID == DynamicSearchEmployeeID)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeSalary) || rule.Match((Employee)x).IsMatch)
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeDesigner) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeDesigner))
                    && (string.IsNullOrEmpty(DynamicSearchEmployeeEmailID) || ((Employee)x).EmployeeName.Contains(DynamicSearchEmployeeEmailID))

не стесняйтесь добавлять любые комментарии или вносить свой вклад в пакет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...