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