Запутывающее утверждение LINQ - PullRequest
0 голосов
/ 24 июня 2009

Я пытаюсь создать оператор LINQ следующим образом:

Результат должен следовать между двумя датами (сегодня в основном) ИЛИ результат должен иметь столбец "batchstatus", который равен false (еще не проверено) результат должен иметь «готовый» столбец, равный true (готов для проверки).

Таким образом, верификаторы могут видеть все данные с сегодняшнего дня, независимо от того, были ли они проверены или нет, НО не должны видеть те данные, которые пользователи еще не готовы увидеть.

Я пробовал это несколькими различными способами, такими как:

Dim p = From t In db.batches _
        Where t.bDate > day1 And t.bDate < day2 And t.Ready = True Or t.BatchStatus = False _
            Order By t.BatchStatus Ascending _
            Select t

Пожалуйста, помогите мне сохранить мои волосы; Теперь у меня есть кучка вещей, и я не знаю, сколько еще я смогу удержаться от того, чтобы выдернуть их !!!

Спасибо!

Ответы [ 3 ]

1 голос
/ 24 июня 2009

А как же:

Dim p = From t In db.batches _
        Where (t.bDate.Date = DateTime.Today Or t.BatchStatus = False) _
               And t.Ready = True _
            Order By t.BatchStatus Ascending _
            Select t
1 голос
/ 24 июня 2009

Используйте скобки. Это сделает вещи на 1001 * много проще. Кроме того, вы можете использовать предложения Let, чтобы упростить ваш запрос, эффективно предоставляя вам «локальные переменные» в запросе. Попробуйте это - синтаксис может быть немного отключен (я не VB парень) и логика вполне может быть не то, что вы хотите, но легче понять IMO, поэтому должно быть легче изменить.

Dim p = From t In db.batches _
        Let createdToday = t.bDate > day1 And t.bDate < day2 _
        Where createdToday And (t.Ready Or Not t.BatchStatus) _
        Order By t.BatchStatus Ascending
0 голосов
/ 24 июня 2009

Спасибо, Джон !!! В моем случае это была скобка:

Dim p = From t In db.batches _
            Where (t.bDate > day1 And t.bDate < day2 And t.Ready = True) Or (t.BatchStatus = False And t.Ready = True) _
            Order By t.BatchStatus Ascending _
            Select t

Еще раз спасибо .... волосы медленно удаляются из мертвой хватки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...