Posso utilizar a classe LINQ para validar esses elementos??? Como posso implementar?
Posso utilizar a classe LINQ para validar esses elementos??? Como posso implementar?
Hmmmm, pensei nisso, porém acho que é um pouco complexo implementar desta forma.
Oi Jeanpuga
Para verificar a existência de um item dentro da lista que obedece um critério utilizando o LINQ, você pode utilizar o método Any
. Sua resposta utilizando o Any
ficaria com o seguinte código:
public class DescontoPorVendaCasada : Desconto
{
public Desconto Proximo { get; set; }
public double Desconta(Orcamento orcamento)
{
bool existe = orcamento.Itens.Any(item => item.Nome.Equals("CANETA") || item.Nome.Equals("LAPIS"));
if (existe)
{
return orcamento.Valor * 0.05;
}
else
{
return Proximo.Desconta(orcamento);
}
}
}
O método Any
devolve o valor true
se algum dos itens da lista obedecer a condição passada no lambda.
Uma implementação alternativa mais próxima da sua implementação original ficaria da seguinte forma:
public class DescontoPorVendaCasada : Desconto
{
public Desconto Proximo { get; set; }
public double Desconta(Orcamento orcamento)
{
string[] nomes = new string[] {"LAPIS", "CANETA"};
bool existe = orcamento.Itens.Any(item => nomes.Contains(item.Nome));
if (existe)
{
return orcamento.Valor * 0.05;
}
else
{
return Proximo.Desconta(orcamento);
}
}
}
Muito obrigado Vitor.
Agradeço também.