Я просто код:
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 не так, как и многие другие примеры на сайте)
Если 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 для передаваемых данных.