У меня есть следующие моделиПозволить одноранговые выражения над IEnumerable <MyObj>
public class Model
{
public string Name {get;set;}
public DateTime HireDate {get;set;}
public decimal Salary {get;set;}
public int Hours {get;set;}
}
Теперь у меня есть следующий список
List<Model> employees = new List<Model>();
Я принимаю выражение ввод строки из пользователя, являются следующими примерами какой пользователь может использовать
Зарплата
Зарплата + 500
Зарплатные * Часы
SUM (часы)
SUM (часы * з)
SUM (часы)/мин (часы)
Я должны обрабатывать выражения пользователя в другой IEnumerable либо int, либо decimal, в зависимости от вычисления и какой тип имеет более высокую точность, например, третье выражение будет генерировать ген Оцените следующие
var result = employees.Select(e => e.Salary * e.Hours)
4-й один приведет к этому
var result = employees.Sum(e => e.Hours)
Я в настоящее время делает его первым разборе выражения в синтаксическое дерево и здание Expression дерева с использованием System.Linq.Expressions имен. При таком подходе существует много кода и не легко читается другими разработчиками. Есть ли более простой способ?
Является ли этот парень с помощью выполнения -компиляция? Это создает dll в памяти каждый раз, когда выражение компилируется. И мои выражения намного упрощены, чем LINQ. Спасибо, что поделились ею. – fahadash
@fahadash Он использует материал 'System.Linq.Expressions', разбирает все и т. Д., Из-за чего у этого есть некоторые накладные расходы, вы написали, что делаете то же самое – MichaC