goshan2011 Ответов: 2

Как динамически манипулировать запросами linq


Это мой код:
var ddt1 = dt.AsEnumerable()
     .GroupBy(r => r.Field<int>("ChartId"))
     .Select(g => new
     {
         ChartId = g.Key,
         SumData = g.Sum(r => r.Field<int>("YAxisData"))
     })
     .ToList();


Я хочу сделать что-то вроде этого:
string funcVariable="  .GroupBy(r => r.Field<int>("ChartId"))
                     .Select(g => new
                     {
                         ChartId = g.Key,
                         SumData = g.Sum(r => r.Field<int>("YAxisData"))
                     })"
                var ddt1 = dt.AsEnumerable()
                   funcVariable
                     .ToList();


Пожалуйста, предложите

Что я уже пробовал:

если я использую переменную, то переменная tolist рассматривается как символы для списка, который не является правильным. Пожалуйста, предложите правильный путь.

Karthik_Mahalingam

Это невозможно.

Prateek Dalbehera

Я не думал о такой, но хорошей идее, как "выполнить", используемой в sql server для динамических sql-запросов. На данный момент он не поддерживается. MS должна начать исследовать его!!!!

2 Ответов

Рейтинг:
2

OriginalGriff

Вы не можете сделать это непосредственно с помощью C# - язык не поддерживает его.

Вы можете сделать это; вы можете создавать код, компилировать и запускать его из приложения: Как программно скомпилировать код с помощью компилятора C# [^] но это не очень хорошее решение для работы общего назначения - его будет трудно поддерживать, трудно контролировать, и если вы не будете очень осторожны, он эффективно передаст контроль над внутренними компонентами вашего приложения пользователю.

Я не могу придумать веской причины для этого, чтобы поместить код Linq в метод вместо этого не было бы лучшим решением.


Рейтинг:
1

Graeme_Grant

Это возможно с помощью Выражение Класса (Система.В LINQ.Выражения)[^] однако это выходит за рамки вопросов и ответов.

Эта статья может помочь: Основах LINQ &амп; выражения лямбда - код проекта [^]