none
Adicionar condição que deve verificar valor de propriedade de coleção interna RRS feed

  • Pergunta

  • Pessoal não consegui a chegar em um código usando LINQ para resolver meu problema (com FindAll funcionou).

    Tenho duas classes Project e CustomField, sendo que na classe Project há uma coleção (List<>) de CustomField.

    Minha função deve buscar em um List<> de Project todos objetos (Project) que na sua lista de CustomFields possui um item com valor "XYZ", ou seja, para determinar se um Project deve ser retornado, além de percorrer todos Projects da List<> deve percorrer também todos os CustomFields de cada Project para ver se tem o elemento de valor especificado ("XYZ" por exemplo).

    Como consigo fazer esta pesquisa? Com join não dá certo pois como a coleção de CustomFields fica dentro da classe Project, no FROM da instrução LINQ eu ainda não tenho acesso à classe CustomField.

    Alguém faz idéia?

    Obrigado.

    Juliano Nunes [ Palestrante Microsoft - MCTS | MCAD ] - http://log.julianonunes.com - Não se esqueça de marcar como resposta!
    sexta-feira, 15 de janeiro de 2010 02:17

Respostas

  • Juliano,

    Você pode tentar uma das opções abaixo.

    var result = from projeto in listaProjetos
                 where projeto.CustomFields.Contains(
                    (from customField in projeto.CustomFields
                     where customField.Valor == "XYZ"
                     select customField).FirstOrDefault()
                    )
                 select projeto;

    var result = from projeto in listaProjetos
                 where projeto.CustomFields.FindAll(c => c.Valor == "XYZ").Count() > 0
                 select projeto;

    var result = from projeto in listaProjetos
                 where projeto.CustomFields.Find(c => c.Valor == "XYZ") != null
                 select projeto;


    Acredito que os colegas do fórum possam ter outras sugestões.

    Att.

    Ari C. Raimundo
    MCAD, MCP
    http://araimundo.blogspot.com
    segunda-feira, 18 de janeiro de 2010 01:17