Динамические переменные в операторе выбора linq

У меня есть список, который динамически заполняется определенными значениями в зависимости от того, какая таблица была выбрана из другого списка. После выбора значения оно отображается в виде графика в зависимости от диапазона даты и времени. С моим незнанием linq: в зависимости от того, какое значение выбрано, оператор linq to sql, который мне нужно создать для получения данных из моей базы данных, отличается, поскольку я не могу использовать индекс для анонимного типа.

result = From t In db.APS _
         Where t.DateTime >= startDate And _
         t.DateTime <= finishDate And t.Weight = weight _
         Select t.DateTime, t.TotalConcentration

t.TotalConcentration следует выбрать, если значением в моем списке является «Общая концентрация», но если это что-то другое, например «Температура» или «Скорость потока» (подключенные к соответствующим столбцам базы данных) — этот метод, очевидно, не будет работать. Мне нужно иметь возможность динамически выбирать конкретный столбец из списка анонимных типов или использовать для этого какой-то другой метод, о котором я не знаю. Я использую VB, но если у вас есть решение на C#, оно также будет оценено.


person Geodesic    schedule 23.11.2009    source источник


Ответы (1)


Взгляните на Динамический Linq. Dynamic Linq позволяет вам указывать имена полей и таблиц в ваших операторах Linq в виде строк, поэтому вы должны иметь возможность передать ему строку из своего списка, чтобы указать поле, которое вы хотите Select.

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

person Robert Harvey    schedule 23.11.2009
comment
Мне удалось сделать с этим то, что я хочу, но кажется бесполезным использовать linq, а затем переопределять половину его функциональности. - person Geodesic; 24.11.2009