2012-09-10 9 views
1

Possible Duplicate:
build linq queries dynamicallyC# LINQ генерировать запрос динамически

LINQ запрос на обновление динамически

У меня есть идентификатор кода метод прохождения, например, если код - 1, то я выбираю данные из tbl A, а если код - 2, я хочу выбрать из tbl B

например. Я пытался сделать: но код не работает

public static void Update(int code, int userid) 
{ 
    var query = 
      (from t1 in code == 1? dataContext.tb1 : dataContext.tb2 
      where t1.Id == userid 
      select t1).SingleOrDefault(); 
} 

Как я могу генерировать запрос динамически?

Благодаря

+0

Предполагая, что tb1 и tb2 имеют различный тип, вы не можете. –

+0

Что значит разные типы таблиц? – Ben

+1

Определить, что «не работает». Какие ошибки вы получаете? – millimoose

ответ

1

Это не очевидно из вашего вопроса, но звучит, как вы используете некоторые Linq обертку на доступ к базе данных. Если это так, то, скорее всего, вы не можете заполнить запрос, который имеет условие для источника данных. Самый простой способ обрешетке такой, если это обрешетка два запроса, как простой, как:

public static void Update(int code, int userid) 
{ 
    SomeType result; 
    if(code == 1) 
    { 
     result = 
     (from t1 in dataContext.tb1 
     where t1.Id == userid 
     select t1).SingleOrDefault(); 
    } 
    else 
    { 
     result = 
     (from t1 in dataContext.tb2 
     where t1.Id == userid 
     select t1).SingleOrDefault(); 
    } 
    // and do something with result 
} 

Редактировать

сейчас это очевидно, что вы используете LINQ к SQL так вышеуказанные стенды. Но ваша ошибка проще тогда, когда у вас есть тернарный оператор, который возвращает два разных типа на стороне истины и false, и это ошибка.

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