если… то для объединения SQL-запросов, эквивалентных в LINQ - VB NET

0

Я просто код:

 Dim query as string = "SELECT id, red, yel, gre FROM table WHERE"
 if a then query=query + " red=true OR"
 if b then query=query + " yel=true OR"
 if c then query=query + " gre=true"
 if right(query,2)="OR" then query=left(query,len(query)-3)

Как сделать эквивалент в LINQ?

Обновление: (мне нужен оператор OR не так, как и многие другие примеры на сайте)

Теги:
linq
if-statement

1 ответ

0
Лучший ответ

Если a, b и c являются булевыми переменными, нижеследующий код работает:

Dim result = dbContext.Table();
result = result.Where(Function(r) (a And r.red) Or (b And r.yel) Or (c And r.gre));
result = result.ToList();

Но если вы имеете в виду a, b и c - логические предложения, и вы используете метод.net, например .ToString() вам нужно изменить код, как .ToString() ниже:

Dim result = dbContext.Table().ToList();
result = result.Where(Function(r) (a And r.red) Or (b And r.yel) Or (c And r.gre));

Поскольку методы.net не могут работать в dbcontext, сначала вызывайте ToList() для передачи данных, после чего вы можете использовать весь метод.Net для передаваемых данных.

  • 0
    Связывает ли это «ГДЕ» с операторами AND, а не OR?
  • 0
    Вы правы, я отредактировал свой ответ
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню