Я вижу два способа динамически генерировать лямбда. Вы можете попробовать Reflection.Emit сгенерировать IL (байтовый код .Net) напрямую и называть их как лямбда или вы можете использовать System.CodeDom и Microsoft.CSharp.CSharpCodeProvider для генерации кода из конструкций более высокого уровня. То, что вы хотите сделать, зависит от того, как вы хотите, чтобы пользователь вводил этот материал. Если вы хотите, чтобы пользователь написал C#, вы можете просто использовать встроенный компилятор.
Динамическое создание Linq должно быть проще. Вы должны иметь возможность генерировать запросы LINQ в виде деревьев выражений во время выполнения, а затем передавать их в исполняемый IQueryable. Я бы посоветовал вам изучить документацию по IQueryable, чтобы узнать больше об этом. Другой способ состоял бы в том, чтобы предварительно определить пару запросов linq, а затем позволить пользователю объединять их вместе. Это должно быть работоспособным, потому что любой запрос Linq возвращает IEnumerable, который может быть использован для следующего запроса Linq.
Звуковой совет. Мы сделали это для настройки рабочих процессов, и он работает очень хорошо. –
Единственным недостатком является то, что вы можете столкнуться с проблемами с полным/частичным доверием, которые предотвратили бы выполнение вашего кода в asp.net – viggity
, это возможность, но это не ответ на мой вопрос ... – Sklivvz