У меня есть пользовательский интерфейс, в котором пользователь может выбрать столбец сетки (например, возраст) и оператор (меньше, равно или больше) для этого столбца.Создание LinqToEntities Где оператор в зависимости от выбора пользователя
Данные сетки затем фильтруются в соответствии с выбором.
У меня есть следующие классы, которые десериализуются из JSON, который поступает от клиента.
/// <summary>
/// Filter for reducing grid results
/// </summary>
public class Filter
{
/// <summary>
/// Name of the column
/// </summary>
public string name;
public string value;
public int @operator { private get; set; }
public Operator Operator()
{
return (Operator) @operator;
}
}
public enum Operator
{
None = -1,
LesserThan = 0,
Equals = 1,
GreaterThan = 2
}
В связи с природой, динамически добавляющей новые столбцы для фильтрации, я хотел бы создать общее решение для доступа к данным.
Я хотел бы избежать того, огромное количество, если/заявления переключатель, как
switch(columnName)
{
case "age":
{
if(operator == Operator.LesserThan)
{
query = entities.Where(o => o.Age < age);
}
else if (operator == Operator.GreaterThan)
{
query = entities.Where(o => o.Age > age);
}
etc.
break;
}
etc.
}
Любые идеи, как создать более общее решение для этой проблемы?
Обновление Похоже, что существует множество способов решения более чистого решения, чем один миллиард, если заявления. Теперь мне просто нужно сравнить различные решения.
Не могли бы вы поделиться образцом, который будет применим к случаю использования ОП, чтобы сделать ваш ответ более наглядным и полным? –