(C#) Можно ли использовать лямбда-выражение, хранимое в переменной типа string, и как это сделать?
Допустим, мы имеем класс "А", и массив, заполненный объектами этого класса:
public class A
{
public int power;
public int temp;
}
public A[] ArrayOfA = new A[99]; //Допустим, этот массив полон данных.
Теперь используя LINQ нам нужно отсортировать этот массив используя лямбда-выражение, вроде такого:
public void Sort()
{
ArrayOfA = ArrayOfA.Where(x => x.power > 220 && x.temp < 100).ToArray();
}
Вопрос заключается в следующем: Есть ли способ применять подобные лямбда-выражения, если они записаны в переменную-строку? (как указано ниже, например)
string lambdaInString = "x => x.power > 220 && x.temp < 100";
public void Sort()
{
ArrayOfA = ArrayOfA.Where(lambdaInString.ToLambda()).ToArray();
//Очевидно, ToLambda() не существует изначально, это пример.
}
Иначе говоря, как можно реализовать расширение "ToLambda()", которое будет преобразовывать строку в съедобное для C# лямбда-выражение?
Было задано много вопросов о том, где мне нужно применять подобную задачу, поэтому поясню:
В двух словах: мне нужно реализовать паттерн, в котором объект заранее определённого класса (В примере - класс "А") должен подходить под условия, которые записаны из вне (условно их записывает пользователь, не имеющий доступа к самому коду и я могу получить их в виде переменных типа string), а если объект класса попадает под это условие, то с ним проводится определённое действие (сортировка, как в примере, или что-то схожее). Для подобного рода условий мне отлично подходят лямбда-выражения, однако тот факт что они не пишутся в коде изначально и создало эту проблему.