2015-11-09 2 views
-1

У меня проблема с созданием сложного запроса с сущностью. Я хотел бы получить дополнительные данные в свой linq-объект на основе параметров, заданных во время построения такого запроса. Вот пример с где:Структурное построение запросов на основе сущности

 if (featureEnabled) 
     { 
      query = query.Where(n => *condition*); 
     } 

Я сложный объект, созданный таким образом:

n => new Entity{ 
    Property = n.Something 
    \* ... *\ 
    PropertyN = n.SomethingN, 
} 

, и я хочу, чтобы загрузить дополнительные данные в сущности, если функция включена (так же, как в том, где пример):

public DoSomething(bool featureEnabled, feature2Enabled, etc.) 
{ 
    return n => new Entity{ 
    Property = n.Something, 
    \* ... *\ 
    PropertyN = n.SomethingN, 
    Feature = (featureEnabled) ? *fetch some data from navigation property* : 0, 
    Feature2 = (feature2Enabled) etc. 
    } 
} 

В приведенных выше примерах параметры (featureNEnabled) будут переведены в sql-параметры. Как выполнить такую ​​операцию во время построения запроса?

ответ

0

я, наконец, нашел ответ на мой вопрос on this blog С помощью этого кода вы можете позвонить expression.Merge (ВЫРАЖЕНИЕ2) и спискам инициализации двух объектов будет объединен в один запрос.

0

Вы имели в виду внутри initializer вы хотите использовать условие if?

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

var a = new MyClass{ 
prop1 = n.prop1, 
prop2 = n.prop2, 
prop3 = n.prop3, 
}; 

a.propN = boolCondition ? n.PropN : 0; 
+0

Lambda выражение с телом оператора не может быть преобразовано в дерево выражений. Я хочу сгенерировать код в инициализаторе на основе переменных конфигурации. – user2029276

+0

Вы упомянули об этом в урском вопросе, которого вы тоже хотите? –

+0

Да - «Я хотел бы получить дополнительные данные в свой linq-объект на основе параметров, данных при построении такого запроса». Можете ли вы рассказать мне, что неясно? – user2029276

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

  • Нет связанных вопросов^_^