我有以下SQL查询,我想将其转换为LINQ。我想使用子查询或LINQ include
语法,不想使用join
:
SELECT Count(*) AS CountOfRecs
FROM tblAcc a
INNER JOIN tblAccOwner o ON
a.[Creditor Registry ID] = o.[Registry ID] AND
a.[Account No] = a.[Account No]
WHERE
(a.[Account Owner ID] = 731752693037116688) AND
a.[Account Type] NOT IN ('CA00', 'CA01', 'CA03', 'CA04', 'CA02',
'PA00', 'PA01', 'PA02', 'PA03', 'PA04')) AND
(DATEDIFF(mm, a.[State Change Date], GETDATE()) <= 4 OR
a.[State Change Date] IS NULL AND
(a.[Account Type] IN ('OD','CL00','PL00') OR a.[Account Type] LIKE '%hala%'))
答案 0 :(得分:3)
答案 1 :(得分:3)
将此转换为Linq应该非常简单 - 尽管如果您想要相同的查询,我认为您应该使用join
!
首先创建你的Linq2Sql模型并导入你的2个表,然后你的查询将具有一般结构
var query = from acc in db.Accs
join accOwner in db.AccOwners on {acc.regId, acc.AccountNo} equals {accOwner.regId, accOwner.AccountNo}
where // your where conditions
// - these should all convert quite easily
// - just translate them one by one
select acc;
var count = query.Count();
如果你确实需要使用子查询,那么既然你是SQL的专家,那么首先在SQL中编写查询,然后测试它,然后将查询翻译成Linq,然后测试它 - 逐行进行翻译你会没事的 - 你也会觉得智能感觉很棒!
请注意,如果您使用.Include()
,那么您可能正在生成的SQL中使用join
。