Array
(
)

Ajuda com Linq

Eric Miranda
   - 15 ago 2012

Bom dia pessoal,
estou tentando utilizar o linq para retornar alguns dados. Até consegui fazer, o exemplo abaixo está funcionando perfeitamente.
#Código
public static ListSobrevidaGlobal ReturnListSobrevidaGlobal( int anoBase, string cidPesquisa, string estadioPesquisa )
{
ListSobrevidaGlobal listaCompleta = new ListSobrevidaGlobal();
listaCompleta = ReturnListAtendimentos();
if( listaCompleta != null && listaCompleta.Count 0 )
{
var listaSelecionada = from lista in listaCompleta
where lista.ResId == 11445
select lista;
ListSobrevidaGlobal listaFinal = new ListSobrevidaGlobal();
foreach( var item in listaSelecionada )
{
SobrevidaGlobal sg = new SobrevidaGlobal()
{
ResId = item.ResId,
ListaCID = item.ListaCID,
DataObito = item.DataObito,
PrestadorId = item.PrestadorId
};
listaFinal.Add( sg );
}
return listaFinal;
}
else
{
return null;
}
}

Só que o where do código abaixo não é exatamente o quer preciso. Aí vem o problema que não estou conseguindo resolver
#Código
var listaSelecionada = from lista in listaCompleta
where lista.ResId == 11445
select lista;

ao invés de lista.ResId == 11445, seria a data_diagnostico que é um valor que está dentro do campo lista.ListaCID.
para ficar mais claro segue a estrutura abaixo.
sobrevida global tem a propriedade ListaCID que é uma lista de CidXml
#Código
public class SobrevidaGlobal
{
public int ResId { get; set; }
public ListCidXml ListaCID { get; set; }
public DateTime? DataObito { get; set; }
public int? PrestadorId { get; set; }
}

#Código
public class CidXml
{
public DateTime Data { get; set; }
public string Cid { get; set; }
public string Tipo { get; set; }
public string Estadio { get; set; }
}

resumindo... seria o where onde da Data estiver entre valores que vem de parâmetros..só que não sei chegar nesse campo.. tipo
where lista.ListaCID.Data == 15/08/2012
obrigado

Eric Miranda
   - 15 ago 2012

Boa tarde galera..depois de muito apanhar ficou assim meu código final
#Código
public static ListSobrevidaGlobal ReturnListSobrevidaGlobal( DateTime dataBase, string cidPesquisa, string estadioPesquisa )
{
ListSobrevidaGlobal listaCompleta = new ListSobrevidaGlobal();
listaCompleta = ReturnListAtendimentos();
int anoProcessamento = dataBase.Year - 6;
DateTime dtInicio = new DateTime(anoProcessamento,1,1);
DateTime dtFinal = new DateTime( anoProcessamento, 12, 31 );
if( listaCompleta != null && listaCompleta.Count 0 )
{
var listaSelecionada = from lista in listaCompleta
where lista.ListaCID.Exists( c = c.Cid == cidPesquisa &&
c.Estadio == estadioPesquisa &&
c.Data = dtInicio && c.Data = dtFinal )
select lista;

ListSobrevidaGlobal listaFinal = new ListSobrevidaGlobal();
foreach( var item in listaSelecionada )
{
SobrevidaGlobal sg = new SobrevidaGlobal()
{
ResId = item.ResId,
ListaCID = item.ListaCID,
DataObito = item.DataObito,
PrestadorId = item.PrestadorId
};
listaFinal.Add( sg );
}
return listaFinal;
}
else
{
return null;
}
}


abs

0
|
0