我需要将sql查询传递给c#。
以下是查询:
select
T010.A010_nom_ent A010_nom_ent
from
T010_ENTIDADE T010,
T016_USUARIO T016
left outer join
T307_CELULA_USUARIO T307 ON T307.A306_seq_celula = 0
and T307.A016_cod_usuario = T016.A016_cod_usuario
where
T010.A010_cod_entidade = T016.A016_cod_usuario
order by 1
,代码在这里:
public List<Entidade> ListarUsuariosCelula()
{
List<Entidade> lstEntidades = null;
try
{
oInvitroEntities = new InvitroEntities();
lstEntidades = (***here is where i want to put the query***)
return lstEntidades;
}
catch (Exception ex)
{
LogErro.Trace(ex);
throw ex;
}
finally
{
oInvitroEntities = null;
}
}
这是我想要做的一个例子(我将只放一段代码):
try
{
oInvitroEntities = new InvitroEntities();
lstCelula = (from cel in oInvitroEntities.T306_CELULA
select new Celula { Codigo = cel.A306_seq_celula, Descricao = cel.A306_dsc_celula }).ToList();
return lstCelula;
}
答案 0 :(得分:2)
您可以使用多行字符串以方便阅读。假设您已经设置了数据库连接和命令对象,则需要执行以下操作来存储查询:
string query = @"select
T010.A010_nom_ent as A010_nom_ent
from
T010_ENTIDADE T010,
T016_USUARIO T016
left outer join
T307_CELULA_USUARIO T307 ON T307.A306_seq_celula = 0
T307.A016_cod_usuario = T016.A016_cod_usuario
where
T010.A010_cod_entidade = T016.A016_cod_usuario
order by 1";
注意,我已更正您的查询:
select
T010.A010_nom_ent as A010_nom_ent
from
T010_ENTIDADE T010,
T016_USUARIO T016
left outer join
T307_CELULA_USUARIO T307 ON T307.A306_seq_celula = 0
T307.A016_cod_usuario = T016.A016_cod_usuario
where
T010.A010_cod_entidade = T016.A016_cod_usuario
order by 1
如果要重命名列,请使用as
关键字来执行此操作。别名仅用于引用表格。
答案 1 :(得分:1)
似乎可以删除左外连接的部分(它不会更改查询结果)。 所以你的sql查询可以在linq中重新定义到实体(有单个内部连接因为我从你的左外连接下拉了):
oInvitroEntities.T010_ENTIDADE.Join(oInvitroEntities.T016_USUARIO,
t10=>t10.A010_cod_entidade,
t16=>t16.A016_cod_usuario,
(t10, t16) => t10.A010_nom_ent);