У меня сбитый с толку оператор SQL (некрасиво), который я пытаюсь написать в LINQ. Я работаю, чтобы получить единую статистику, которая будет выполнять, а не предварительно выбранные данные в списки, которые я должен отправить обратно на сервер.
DECLARE @StartDate DATETIME ;
DECLARE @EndDate DATETIME ;
SET @pStartDate = '20100501'
SET @pEndDate = '20100531'
SELECT r.company ,r.trandate ,r.currency ,r.account ,r.credit ,r.debit
FROM dbo.Register r
INNER JOIN dbo.CompanyList c ON r.company = c.company
WHERE
r.trandate BETWEEN @pStartDate AND @pEndDate
AND LEN(r.currency) > 0
AND (
( r.account = 'XXX-ZZZ' )
OR
( LEFT(r.account, 3) IN ( SELECT LEFT(code, 3) FROM dbo.investments ))
OR
( r.account IN (
SELECT account FROM dbo.CompanyInfo WHERE company = r.company
AND ( ( dateclosed IS NULL )
OR dateclosed >= @pStartDate) ) )
)
Это пример, содержащий код проблемы - предложение WHERE с тройным выражением ИЛИ. Я попытался использовать три разных запроса, а затем concat () или union (), который возвращает неверное количество записей, потому что запись может соответствовать нескольким выражениям. Я собираюсь попробовать изменить логику и создать новую версию TSQL, которая может помочь мне найти решение в LINQ.
Идеи приветствуются.