Я должен построить запрос, который должен иметь и / / или логи 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;
}
}
Может кто-нибудь помочь мне, где я делаю неправильно?