pt.so/272889-alt

CSharp · Console

/Program.cs

using System;
using System.Linq;
using System.Collections.Generic;

using static System.Console;
					
public class Program
{
	KeyValuePair<Func<decimal, bool>, string>[] pares = new[]	
	{
		new KeyValuePair<Func<decimal, bool>, string>(valor => valor > 5, "Maior que 5"),
		new KeyValuePair<Func<decimal, bool>, string>(valor => valor > 0 && valor < 5, "Maior que 0 e menor que 5"),
		new KeyValuePair<Func<decimal, bool>, string>(valor => valor > 0, "Número positivo")
	};

	static string ValidarTotalAgrupado(decimal valor, params KeyValuePair<Func<decimal, bool>, string>[] pares)
	{
		var ret = pares.Where(p => p.Key(valor))
					   .Select(p => p.Value)
					   .Aggregate((a, b) => $"{a}, {b}");
		
		return ret;
	}
	
	static string ValidarTotal(decimal valor, params KeyValuePair<Func<decimal, bool>, string>[] pares)
	{
		foreach(var item in pares)
		{
			if(item.Key(valor)) {
				return item.Value;
			}
		}	
		return null;
	}
	
	public void Main()
	{	
		var testes = new[] 
		{
			new { Valor = 6m },
			new { Valor = 2m },
			new { Valor = 0.5m }
		};
		
		foreach(var teste in testes)
		{
			var res = ValidarTotal(teste.Valor, pares);
			var resAgrupado = ValidarTotalAgrupado(teste.Valor, pares);
			
			WriteLine($"Valor: {teste.Valor:n2}\nResultado: {res}\nAgrupado: {resAgrupado}\n");
		}
	}
}
;