Linq to sql LInq到sql查询
我有一个sql查询,如下所示:Linq to sql LInq到sql查询,linq-to-sql,Linq To Sql,我有一个sql查询,如下所示: Declare @DivisionNo INT SET @DivisionNo = 5117 SELECT distinct CASE WHEN ISNULL([DivisionNo],'') <> @DivisionNo THEN @DivisionNo ELSE [DivisionNo] END as DivisionNo --,[RecordID]
Declare @DivisionNo INT
SET @DivisionNo = 5117
SELECT distinct CASE WHEN ISNULL([DivisionNo],'') <> @DivisionNo
THEN @DivisionNo ELSE [DivisionNo] END as DivisionNo
--,[RecordID]
,[AcctCat]
,[AcctCatDesc]
,[CostCode]
,[CostCodeDesc]
FROM [dbo].[vw_eSchdl_AcctCat_CostCode]
WHERE DivisionNo = @DivisionNo
UNION
SELECT distinct CASE WHEN ISNULL([DivisionNo],'') <> @DivisionNo
THEN @DivisionNo ELSE [DivisionNo] END as DivisionNo
--,[RecordID]
,[AcctCat]
,[AcctCatDesc]
,[CostCode]
,[CostCodeDesc]
FROM [dbo].[vw_eSchdl_AcctCat_CostCode]
WHERE AcctCat not in (
SELECT [AcctCat]
FROM [dbo].[vw_eSchdl_AcctCat_CostCode]
WHERE DivisionNo = @DivisionNo
)
如何使用linq到sql复制它
谢谢您可以使用将SQL转换为Linq。你可以从下载。如果你有一点时间,最好的学习方法就是自己动手。您可以使用SQL打开的选项卡和LINQ打开的选项卡,并尝试复制您的查询结果。功能等效的选项卡如何
int divisionNo = 5117;
var matches = from ac in context.AcctCatCostCodes
where ac.DivisionNo == divisionNo
select ac;
var missingAcctCat = from ac in matches
select ac.AcctCat;
var others = from ac in context.AcctCatCostCodes
where !missingAcctCat.Contains(ac.AcctCat)
select ac;
var union = from ac in matches.Union(others)
select new
{
DivisionNo = ac.DivisionNo ?? divisionNo,
ac.AcctCat,
ac.AcctCatDesc,
ac.CostCode,
ac.CostCodeDesc
};
。。。与方法相同,而不是查询语法
var matches = context.AcctCatCostCodes
.Where(ac => ac.DivisionNo == divisionNo);
var missingAcctCat = matches.Select(ac => ac.AcctCat);
var others = context.AcctCatCostCodes
.Where(ac => !missingAcctCat.Contains(ac.AcctCat));
var union = matches.Union(others).Select(ac =>
new
{
DivisionNo = ac.DivisionNo ?? divisionNo,
ac.AcctCat,
ac.AcctCatDesc,
ac.CostCode,
ac.CostCodeDesc
});
。。。由LINQ2SQL生成的SQL
SELECT COALESCE([t4].[DivisionNo],@p2) AS [DivisionNo],
[t4].[AcctCat],
[t4].[AcctCatDesc],
[t4].[CostCode],
[t4].[CostCodeDesc]
FROM (
SELECT [t3].[AcctCat], [t3].[AcctCatDesc], [t3].[CostCode],
[t3].[CostCodeDesc], [t3].[DivisionNo]
FROM (
SELECT [t0].[RecordID], [t0].[AcctCat], [t0].[AcctCatDesc],
[t0].[CostCode], [t0].[CostCodeDesc], [t0].[DivisionNo]
FROM [AcctCatCostCode] AS [t0]
WHERE [t0].[DivisionNo] = @p0
UNION
SELECT [t1].[RecordID], [t1].[AcctCat], [t1].[AcctCatDesc],
[t1].[CostCode], [t1].[CostCodeDesc], [t1].[DivisionNo]
FROM [AcctCatCostCode] AS [t1]
WHERE NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [AcctCatCostCode] AS [t2]
WHERE ([t2].[AcctCat] = [t1].[AcctCat])
AND ([t2].[DivisionNo] = (@p1))
))
) AS [t3]
) AS [t4]
你试过什么?你能走到半路,却被困在某个地方吗?你能把你的东西贴出来吗?哪一位会给你带来麻烦?或者您不知道从哪里开始?@Mark-LinqPad不会将SQL转换为Linq。然而,一款名为Linqer的产品将继续使用。