У меня есть ниже SQL QueryНевозможно сформировать правильный запрос Linq, используя список «IN»
;with cte as(
select a.*
from [dbo].[AccountViewModel] a
where a.COLLECTORID = 724852
and a.MONTH = 12
and a.YEAR=2015)
select *
from cte c
where c.DispCode in ('Deceased','DND','WN','WI','NC','NORESPONSE','SKIP','SHIFTED','SFU')
OR (c.DispCode in('PTP','DIB','WCE','DP') and convert(varchar(11), c.PTPDate) >=convert(varchar(11), getdate()))
OR (MONTH(c.LastPaymentDate) = 12 and YEAR(c.LastPaymentDate)=2015)
Мне нужно преобразовать это в эквивалентный запрос Linq (C#).
КТР часть работает отлично с ниже программы (я перекрестная проверка записи)
private List<AccountViewModel> GetAllAcountsForLoggedInAgents()
{
var allAcountsForLoggedInAgents = new List<AccountViewModel>();
allAcountsForLoggedInAgents = new ViewModelDatabase()
.Accounts
.Where(a =>
a.COLLECTORID == 724852 &&
a.MONTH == DateTime.Now.Month &&
a.YEAR == DateTime.Now.Year
)
.ToList();
return allAcountsForLoggedInAgents;
}
Однако часть вне КТР не работает должным образом (означает неправильные записи)
GetAllAcountsForLoggedInAgents()
.Where
(
a =>
("Deceased,DND,WN,WI,NC,NORESPONSE,SKIP,SHIFTED,SFU".Split(',').Any(x => x.Contains(a.DispCode)))
|| ("PTP,DIB,WCE,DP".Split(',').Any(b => b.Contains(a.DispCode)) && a.PTPDate >= DateTime.Now)
|| (a.LastPaymentDate.Value.Month == 12 && a.LastPaymentDate.Value.Year == 2015)
)
Я считаю, что, возможно, я использую «ЛЮБОЙ» неправильно.
Может ли кто-нибудь помочь?
Благодаря
спасибо, сэр, решение сработало ... им нужно сделать еще несколько тестов, а затем принять –
Сэр, всего 1 вещь, чтобы спросить, так что мне нужно сделать для («PTP, DIB, WCE, DP» .Split (','). Любой (b => b.Contains (a.DispCode)) –
@ priyanka.sarkar Да, вам нужно сделать аналогичное для другого условия 'IN' –