Array
(
)

LINQ To DataSet

Renato
|
MVP
Pontos: 1000
    01 set 2014

Alguém pode me ajudar a transformar uma stored procedure em linq por favor?
Stored Procedure
#Código
SELECT
Planilha.num_contrato,
Planilha.num_servico,
Planilha.escritorio,
Planilha.area_telefonica,
Planilha.servico_tipo,
Planilha.servico_subtipo,
Planilha.data_geracao,
Planilha.ordem_interna,
Planilha.boletim_anormalidade,
Planilha.plano_trabalho,
Planilha_Um.ata_estudo_num,
Planilha_Um.ata_estudo_inicio,
Planilha_Um.ata_estudo_fim,
Planilha_Um.ata_estudo_comeco,
Planilha_Um.ata_estudo_conclusao,
Planilha_Dois.medicao_num,
Planilha_Dois.medicao_data_criacao,
SUM(Planilha_Dois.medicao_valor_pagar) AS Valor_Pagar,
Planilha_Dois.medicao_acesso_atividade,
Planilha_Dois.medicao_data_classificacao

FROM Servico_Arquivo Planilha
INNER JOIN Servico_Arquivo_Um Planilha_Um ON
Planilha.num_contrato = Planilha_Um.num_contrato AND Planilha.num_servico = Planilha_Um.num_servico
INNER JOIN Servico_Arquivo_Dois Planilha_Dois ON
Planilha.num_contrato = Planilha_Dois.num_contrato AND Planilha.num_servico = Planilha_Dois.num_servico
GROUP BY
Planilha.num_contrato,
Planilha.num_servico,
Planilha.escritorio,
Planilha.area_telefonica,
Planilha.servico_tipo,
Planilha.servico_subtipo,
Planilha.data_geracao,
Planilha.ordem_interna,
Planilha.boletim_anormalidade,
Planilha.plano_trabalho,
Planilha_Um.ata_estudo_num,
Planilha_Um.ata_estudo_inicio,
Planilha_Um.ata_estudo_fim,
Planilha_Um.ata_estudo_comeco,
Planilha_Um.ata_estudo_conclusao,
Planilha_Dois.medicao_num,
Planilha_Dois.medicao_data_criacao,
Planilha_Dois.medicao_acesso_atividade,
Planilha_Dois.medicao_data_classificacao

UNION
SELECT
Planilha.num_contrato,
Planilha.num_servico,
Planilha.escritorio,
Planilha.area_telefonica,
Planilha.servico_tipo,
Planilha.servico_subtipo,
Planilha.data_geracao,
Planilha.ordem_interna,
Planilha.boletim_anormalidade,
Planilha.plano_trabalho,
Planilha_Um.ata_estudo_num,
Planilha_Um.ata_estudo_inicio,
Planilha_Um.ata_estudo_fim,
Planilha_Um.ata_estudo_comeco,
Planilha_Um.ata_estudo_conclusao,
NULL AS medicao_num,
NULL AS medicao_data_criacao,
NULL AS medicao_acesso_atividade,
NULL AS medicao_data_classificacao,
NULL AS medicao_valor_pagar
FROM Servico_Arquivo Planilha
INNER JOIN Servico_Arquivo_Um Planilha_Um ON
Planilha.num_contrato = Planilha_Um.num_contrato AND Planilha.num_servico = Planilha_Um.num_servico

GROUP BY
Planilha.num_contrato,
Planilha.num_servico,
Planilha.escritorio,
Planilha.area_telefonica,
Planilha.servico_tipo,
Planilha.servico_subtipo,
Planilha.data_geracao,
Planilha.ordem_interna,
Planilha.boletim_anormalidade,
Planilha.plano_trabalho,
Planilha_Um.ata_estudo_num,
Planilha_Um.ata_estudo_inicio,
Planilha_Um.ata_estudo_fim,
Planilha_Um.ata_estudo_comeco,
Planilha_Um.ata_estudo_conclusao
END

LINQ (até o momento)
#Códigovar servico = ds.Tables[0].AsEnumerable();
var ata = ds.Tables[1].AsEnumerable();
var medicao = ds.Tables[2].AsEnumerable();
var results = from Servico in servico
join Ata in ata.AsEnumerable() on new { num_contrato = (string)Servico["num_contrato"], num_ordem = (string)Servico["num_servico"] }
equals new { num_contrato = (string)Ata["num_contrato"], num_ordem = (string)Ata["num_servico"] }
join Medicao in medicao.AsEnumerable() on new { num_contrato = (string)Servico["num_contrato"], num_ordem = (string)Servico["num_servico"] }
equals new { num_contrato = (string)Medicao["num_contrato"], num_ordem = (string)Medicao["num_servico"] }
group new { Servico, Ata, Medicao } by new
{
num_contrato = Servico.Field<string>("num_contrato"),
num_servico = Servico.Field<string>("num_servico"),
escritorio = Servico.Field<string>("escritorio"),
area_telefonica = Servico.Field<string>("area_telefonica"),
servico_tipo = Servico.Field<string>("serivo_tipo"),
servico_subtipo = Servico.Field<string>("serivo_subtipo"),
data_geracao = Servico.Field<DateTime>("data_geracao").ToString(),
ordem_interna = Servico.Field<string>("ordem_interna"),
boletim_anormalidade = Servico.Field<string>("boletim_anormalidade"),
plano_trabalho = Servico.Field<string>("plano_trabalho"),
aep_num = Ata.Field<string>("ata_estudo_num"),
aep_inicio = Ata.Field<DateTime>("ata_estudo_inicio").ToString(),
aep_fim = Ata.Field<DateTime>("ata_estudo_fim"),
aep_comeco = Ata.Field<DateTime>("ata_estudo_comeco"),
aep_conclusao = Ata.Field<DateTime>("ata_estudo_conclusao"),
medicao_num = Medicao.Field<string>("medicao_num"),
medicao_data_criacao = Medicao.Field<DateTime>("medicao_data_criacao").ToString(),
medicao_acesso_atividade = Medicao.Field<string>("medicao_acesso_atividade"),
medicao_data_classificao = Medicao.Field<DateTime>("medicao_data_classificao")
} into GM
select new
{
num_contrato = GM.Key.num_contrato,
num_servico = GM.Key.num_servico,
escritorio = GM.Key.escritorio,
area_telefonica = GM.Key.area_telefonica,
serivo_tipo = GM.Key.servico_tipo,
serivo_subtipo = GM.Key.servico_subtipo,
data_geracao = GM.Key.data_geracao,
ordem_interna = GM.Key.ordem_interna,
boletim_anormalidade = GM.Key.boletim_anormalidade,
plano_trabalho = GM.Key.plano_trabalho,
aep_num = GM.Key.aep_num,
aep_inicio = GM.Key.aep_inicio,
aep_fim = GM.Key.aep_fim,
aep_comeco = GM.Key.aep_comeco,
aep_conclusao = GM.Key.aep_conclusao,
medicao_num = GM.Key.medicao_num,
medicao_valor = GM.Sum(valor => valor.Medicao.Field<Decimal>("medicao_valor_pagar")),
medicao_data_criacao = GM.Key.medicao_data_criacao,
medicao_acesso_atividade = GM.Key.medicao_acesso_atividade,
medicao_data_classificao = GM.Key.medicao_data_classificao
};

Gostaria de saber se o caminho é esse mesmo para e como fazer para que a query results retorne um DataTable?
Obrigado

Renato
|
MVP
Pontos: 1000
    02 set 2014

Resolvido.

0
|
0