Фильтр запросов с логинами And и Or c in C# - PullRequest
0 голосов
/ 20 апреля 2020

Я должен построить запрос, который должен иметь и / / или логи c. В приведенном ниже логе c, если поля фамилии и даты покупки в пользовательском интерфейсе являются обязательными, где в качестве имени клиента и идентификатора клиента необходимо ввести любое из этих полей. Тем не менее, в queryFilter в приведенном ниже коде мне нужно построить фильтр таким образом, чтобы, если пользователь вводит и имя клиента, и идентификатор клиента, по крайней мере одно из этих двух значений является правильным, мне нужно получить данные. Это означает, что мне нужно создать оператор OR для имени клиента и идентификатора клиента. Поскольку даже одно из этих двух значений совпадает в записях базы данных, оно должно быть возвращено. Но, в настоящее время с приведенным ниже кодом, я не смог получить данные:

List<QueryFilter> filter = new List<QueryFilter>();

            filter.Add(new Core.QueryFilter("ProductName", Core.QueryOperator.Equal, productName));
            filter.Add(new Core.QueryFilter("DateOfPurchase", Core.QueryOperator.Equal, dop));

            if (!string.IsNullOrEmpty(customerName))
            {
                filters.Add(new Core.QueryFilter("CustName", Core.QueryOperator.Equal, customerName, QueryLogic.Or));
            }

            if (!string.IsNullOrEmpty(customerId))
            {
                filters.Add(new Core.QueryFilter("CustomerID", Core.QueryOperator.Equal, customerId, QueryLogic.Or));
            }

Ниже, если класс QueryFilter:

public class QueryFilter
    {
        public string Field { get; set; }
        public QueryOperator Operator { get; set; }
        public QueryLogic Logic { get; set; }
        public string Value { get; set; }

        public IEnumerable<QueryFilter> Filter { get; set; }

        public QueryFilter() { }

        public QueryFilter(string field, QueryOperator op, string value, QueryLogic logic = 0)
        {
            Field = field;
            Operator = op;
            Value = value;
            Logic = logic;
        }

    }

Может кто-нибудь помочь мне, где я делаю неправильно?

...