none
Linq em LIST RRS feed

  • Pergunta

  • Galera preciso fazer um linq na minha lista retornando se a propriedade executar é igual a true, e se os cenários são iguais a true também olhando a propriedade executar de dentro de cada cenário.

    Fiz o primeiro nivel mas não estou conseguindo fazer o segundo nivel. Alguem poderia me ajudar por favor, segue :

    Obrigado


    SirSmart

    sexta-feira, 29 de setembro de 2017 13:21

Respostas

  • Coloque o ToList no final e remove a lista duplicada "test"

    item.TestScenarios = item.TestScenarios.Where(x => x.Executar == "true").ToList();

    Se preferir também pode fazer assim:

    IEnumerable<TestStory> test = console.console.TestStory.Where(x => x.Executar == "true");
    var resultado = (from s in test
        select new TestStory
        {
            Executar = s.Executar,
            TestScenarios = s.TestScenarios.Where(x => x.Executar == "true").ToList()
        }).Where(x => x.Executar == "true").ToList();

    Espero ter ajudado!

    Att


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney sexta-feira, 29 de setembro de 2017 18:35
    • Marcado como Resposta SirSmart sexta-feira, 29 de setembro de 2017 18:38
    sexta-feira, 29 de setembro de 2017 18:35

Todas as Respostas

  • Bom dia,

    Não sei se consegui entender sua ideia, mas se quer pegar o cenário de cada "TestStory" dentro da estrutura de repetição você pode fazer assim:

    var lista = executarTestStory[i].TestScenarios.Where(x => x.Executar);

    Caso deseje fazer de outra maneira ou simplificar, sugiro que poste a ideia completa e os códigos.

    Espero ter ajudado!

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney sexta-feira, 29 de setembro de 2017 15:32
    • Marcado como Resposta Filipe B CastroModerator sexta-feira, 29 de setembro de 2017 16:25
    • Não Marcado como Resposta SirSmart sexta-feira, 29 de setembro de 2017 17:06
    • Marcado como Resposta Filipe B CastroModerator sexta-feira, 29 de setembro de 2017 17:39
    • Não Marcado como Resposta SirSmart sexta-feira, 29 de setembro de 2017 17:41
    sexta-feira, 29 de setembro de 2017 15:32
  • Isso até funciona, o meu problema é que preciso manter a estrutura que tenho acima, ou seja, N cenários para um TestStory.

    Dessa forma eu quebro a coleção e não tenho como saber de qual cenário é a TestStory, pois só me retorna o cenário.

    Tem alguma outra forma de fazer ?

    Fiz o código abaixo, mas quebra a coleção

    IEnumerable<TestStory> test = console.console.TestStory.Where(x => x.Executar == "true");
                
                foreach (var item in test)
                {
                    var te = item.TestScenarios.Where(x => x.Executar == "false");
                }

    Obrigado


    SirSmart


    • Editado SirSmart sexta-feira, 29 de setembro de 2017 17:42
    sexta-feira, 29 de setembro de 2017 17:10
  • Não entendi o certo sua dúvida, já que se você está no loop você tem o 'TestStory' e quando você obtém a lista não perde os dados ou seja continua com a lista "executarTestStory" .
    Além do mais se o seu CenarioNome for único você pode obtê-lo facilmente fazendo um select.

    Se eu entender melhor o cenário eu posso te ajudar.

    Att


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 29 de setembro de 2017 17:45
  • Vou tentar explicar melhor. Eu tenho uma coleção que pode ter N TestStory e N cenários para cada TestStory.

    Tenho uma propriedade chamada "Executar" para cada TestStory e o mesma propriedade "Executar" para cada cenário.

    Eu preciso retornar todas as TestStory que a propriedade "Executar" seja true e os seus respectivos cenários que também tenham esse parametro true na propriedade "Executar".

    Estou conseguindo pegar apenas as TestStory que sejam true, porem os cenários que contem em cada uma pode estar como falso e não posso carregar minha coleção com eles.

    Ficou melhor a explicação ? ;)

    Como posso resolver isso ?

    Obrigado


    SirSmart

    sexta-feira, 29 de setembro de 2017 17:52
  • Acredito que entendi.

    Você quer montar um lista de "TestStory" que "Executar" seja true com seu respectivos cenários desde que tambem seja "Executar" true, ou seja eliminando os cenários com "Executar" false.

    Se for isso, você pode fazer assim: 

    IEnumerable<TestStory> test = console.console.TestStory.Where(x => x.Executar == "true");
            
    foreach (var item in test)
    {
    	item.TestScenarios = item.TestScenarios.Where(x => x.Executar == "true");
    }

    Com isso sua lista "test" vai ter apenas TestStory true com os cenários também true;

    Seria isso?


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 29 de setembro de 2017 18:04
  • É isso mesmo, mas está me retornando o seguinte erro:

    O que seria esse erro ?

    Obrigado


    SirSmart

    sexta-feira, 29 de setembro de 2017 18:25
  • Coloque o ToList no final e remove a lista duplicada "test"

    item.TestScenarios = item.TestScenarios.Where(x => x.Executar == "true").ToList();

    Se preferir também pode fazer assim:

    IEnumerable<TestStory> test = console.console.TestStory.Where(x => x.Executar == "true");
    var resultado = (from s in test
        select new TestStory
        {
            Executar = s.Executar,
            TestScenarios = s.TestScenarios.Where(x => x.Executar == "true").ToList()
        }).Where(x => x.Executar == "true").ToList();

    Espero ter ajudado!

    Att


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Sugerido como Resposta Silvaney sexta-feira, 29 de setembro de 2017 18:35
    • Marcado como Resposta SirSmart sexta-feira, 29 de setembro de 2017 18:38
    sexta-feira, 29 de setembro de 2017 18:35
  • Muito obrigado

    Abraço


    SirSmart

    sexta-feira, 29 de setembro de 2017 18:38