2014-01-05 3 views
3

Я хотел сформулировать 1) запрос динамически, как показано в 2)как сформулировать следующий запрос LINQ динамически

1)

Select col1, Sum(col2) 
    from t1 
    where col3 = 1 
     and co11 between '01 jan 2009' and '31 dec 2013' 
    group by co11 

2) И я хотел бы сформулировать выше, следующее 2012 (LINQ к сущности)

" select "+ @selectclause + " from t1 where " + whereclause 

кто-то предложил мне, что приведенный выше запрос можно сформулировать с помощью http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

Можно ли сформулировать его с помощью System.linq.Dynamic или System.Linq.Expression? Я не могу этого сделать из-за нехватки времени.

Я пытался некоторые вещи, как с помощью следующих System.Linq.dynamic

var var1 = context.table1.Where(strWhereClause) 
.Where(i => i.co11 >= dtDateFrom && i.co11 <= dtDateTo).GroupBy("new(" + varGroupBy + ")").Select("new(" + varAggregateCol + ")"); 

Пожалуйста, скажите мне, если моя куча запросов может быть forumlated по System.Linq.Expression тогда я должен использовать System.Linq.Dynamic или shouldI отдавать приоритет System.Linq.Expression.

вашего sincerley

+1

DynamicLinq - лучшее и самое простое решение! создание дерева выражений слишком сложно ... –

+0

так что не работает в вашем текущем решении? – Grundy

+0

Я пробовал много вещей, но не мог получить, значит, пока я трюк других вещей. – user3129097

ответ

0

Вот пример того, что это будет выглядеть так:

var query = t1.Where("col3 = 1 AND col1 >= @0 AND col1 <= @1", dtDateFrom, dtDateTo) 
      .GroupBy("col1") 
      .Select(varAggregateCol) 

В то время как стандартная библиотека Dynamic Linq просто возвращает IQueryable, который трудно использовать, я поддержание постоянно обновленная библиотека (https://www.nuget.org/packages/System.Linq.Dynamic.Library), которая возвращает IQueryable {dynamic} (при условии, что вы используете .NET 4.0+), что позволяет вам легко получить доступ к результирующим членам динамически.

Смежные вопросы