¿Cuál de estas soluciones se prefiere?C# declaraciones Linq o un foreach() para totalizar subconjuntos?
Para una lista:
List<ExampleInfo> exampleList = new List<ExampleInfo>();
public class ExampleInfo
{
internal ExampleInfo()
{ }
/* Business Properties */
public int Id { get; set; }
public string Type { get; set; }
public decimal Total { get; set; }
}
deseo de obtener subtotales con sede fuera del valor 'Total'.
Opción 1:
var subtotal1 = exampleList.Where(x => x.Type == "Subtype1").Sum(x => x.Total);
var subtotal2 = exampleList.Where(x => x.Type == "Subtype2").Sum(x => x.Total);
Opción 2:
decimal subtotal1 = 0m;
decimal subtotal2 = 0m;
foreach (ExampleInfo example in exampleList)
{
switch (example.Type)
{
case "Subtype1":
subtotal1 += example.Total;
break;
case "Subtype2":
subtotal2 += example.Total;
break;
default:
break;
}
}
La lista será < 10 artículos en la mayoría de los casos.
Editar: Chris planteó un muy buen punto que no mencioné. El programa ya está utilizando .NET Framework 3.5 SP1, por lo que la compatibilidad no es una consideración importante aquí.
Exactamente lo que estaba ocupado escribiendo al mismo tiempo :) –
ja acabo de escribir el equivalente funcional –