【发布时间】:2018-02-23 18:35:28
【问题描述】:
SELECT O.*, U.*, C.*, P.*, S.*
INTO OV, Usuarios, Clientes, Proposta, Status
FROM[dbo].[TB_OV] O
INNER JOIN dbo.TB_Usuarios U on U.id = O.userinsert
INNER JOIN dbo.TB_Clientes C on C.id = O.ENDFAT
INNER JOIN dbo.TB_Status S on S.id = O.status
LEFT JOIN TB_Proposta P on P.id = O.ID_PROP
WHERE O.status = 214 ORDER BY O.DTSOL, O.DtdeFaturamento
我正在用 C# 开发一个 Web 系统,而我正在尝试做的查询之一就是这个...
我想知道执行此操作或类似操作的正确语法是什么。
我需要确切知道的是如何将这五个表选择为五个不同的变量,就像一个对象一样,我可以稍后在 C# 中将其转换为对象类型。
否则,我尝试使用 C# 中的 LINQ to SQL 执行此操作,但我仍然没有从 LINQ to SQL 中的查询中获得任何结果到这些表。
拉姆达:
var query = db.TB_OV
.Join(db.TB_Usuarios, OV => OV.USERINSERT, U => U.ID, (OV, U) => new { OV, U })
.Join(db.TB_Clientes, Z => Z.OV.ENDFAT, CL => CL.ID, (Z, CL) => new { Z, CL })
.Join(db.TB_Status, Z => Z.Z.OV.STATUS, ST => ST.ID, (Z, ST) => new { Z, ST })
.Join(db.TB_Proposta, Z => Z.Z.Z.OV.ID_PROP, P => P.ID, (Z, P) => new { Z, P })
.Where(Z => Z.Z.Z.Z.OV.STATUS == 214)
.Select(Z => new OperacoesListaSolFaturamento
{
OV = Z.Z.Z.Z.OV,
Usuarios = Z.Z.Z.Z.U,
Clientes = Z.Z.Z.CL,
Status = Z.Z.ST,
Proposta = Z.P
});
流利:
var query = from O in db.TB_OV
join U in db.TB_Usuarios on O.USERINSERT equals U.ID
join C in db.TB_Clientes on O.ENDFAT equals C.ID
join S in db.TB_Status on O.STATUS equals S.ID
join P in db.TB_Proposta on O.ID_PROP equals P.ID
where O.STATUS == 214
select new OperacoesListaSolFaturamento
{
OV = O,
Usuarios = U,
Clientes = C,
Status = S,
Proposta = P
};
有没有办法做到这一点?通过 LINQ 或 SQL 查询。
【问题讨论】:
-
你的问题有点不清楚,你能通过添加一些样本和期望的结果来澄清它吗?
-
好吧,对不起,我会尽量简化
-
现在试着理解并告诉我你是否意识到了
-
这不像你想象的那样工作。 1. * 符号替换为所有实际列。 2. Into 子句不支持多个目标表。
-
那么我该如何以其他方式做到这一点?使用 SQL 查询或 LINQ