Динамический LINQ и Динамические Лямбда-выражения?

df = Daru::DataFrame.from_csv("df.csv")
df.set_index "time"
df.index = Daru::DateTimeIndex.new(df.index)
df
<Daru::DataFrame(5x2)>
                  min        max
2018-01-01        101        103
2018-01-02        102        105
2018-01-03        103        200
2018-01-04        104        109
2018-01-05        105        110
14
задан Sklivvz 22 September 2008 в 09:47
поделиться

6 ответов

Я не могу рекомендовать выше, чем Вы прочитывающий регистрации Bart Де-Смет ( http://community.bartdesmet.net/blogs/bart/ ), он является действительно блестящим когда дело доходит до Лямбды.

Его недавний ряд покрыл динамическую Лямбду, начиная с http://community.bartdesmet.net/blogs/bart/archive/2008/08/26/to-bind-or-not-to-bind-dynamic-expression-trees-part-0.aspx

Абсолютно красивый код.

11
ответ дан 1 December 2019 в 14:33
поделиться

Я вижу два способа, которыми можно динамично генерировать лямбду. Вы могли попробовать Отражение. Испустите, чтобы генерировать IL (байт-код .NET) непосредственно и назвать их как лямбду, или можно использовать Систему. CodeDom и Microsoft. До-диез. CSharpCodeProvider, чтобы сгенерировать код от высокоуровневых конструкций. То, что Вы хотите сделать, зависит от того, как Вы хотите, чтобы пользователь ввел этот материал. Если Вы хотите, чтобы пользователь записал C# тогда, можно просто использовать созданный в compliler.

Генерация Linq динамично должен быть легче. Необходимо быть в состоянии генерировать запросы LINQ как деревья выражений во времени выполнения и затем передать их в IQueryable для выполнения. Я предложил бы, чтобы Вы изучили документацию относительно IQueryable для получения дополнительной информации об этом. Иначе должен был бы предопределить несколько запросов linq и затем позволить пользователю объединять их в цепочку вместе. Это должно быть осуществимо, потому что любой запрос Linq возвращает IEnumerable, который может быть использован следующим запросом Linq.

1
ответ дан 1 December 2019 в 14:33
поделиться

Другая возможность состоит в том, чтобы интегрировать время выполнения сценариев в Вашу программу, так, чтобы Ваши пользователи могли записать бизнес-логику в DSL. IronPython был бы кандидатом.

2
ответ дан 1 December 2019 в 14:33
поделиться

Я не понимаю то, что делает Вы означаете говорить "лучший способ". Было бы лучше обеспечить простой пример того, чего Вы хотите достигнуть. Создание динамического выражения LINQ не трудно, но хитро.

Вот пример динамического linq создания выражения:

, Как я составляю существующие Выражения Linq

-1
ответ дан 1 December 2019 в 14:33
поделиться

Лямбда-выражения могут быть легко созданы через Систему. Linq. Пространство имен выражений.

0
ответ дан 1 December 2019 в 14:33
поделиться

System.Linq.Expressions - это то, что вам нужно. Я написал красивый пользовательский интерфейс, который позволяет пользователям определять и создавать запросы динамически в виде дерева выражений. Затем вы можете передать это Linq2SQL или клиенту по вашему выбору.

0
ответ дан 1 December 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: