Usuário com melhor resposta
Criar somatórios através da Lista com LINQ

Pergunta
-
Bom dia Galera!
Meu cenário é o seguinte...tenho uma lista onde possuo propriedades de valor onde quero fazer comparações e somatório.Ex:
- Quero pegar o maior valor de uma propriedade;
- Quero pegar o menor valor de uma propriedade;
- Quero fazer a média de uma propriedade;
Como poderia fazer isso com LINQ.
Respostas
-
Segue exemplo:
Public Class ClasseTeste Public Property Id() As Integer Get Return m_Id End Get Set m_Id = Value End Set End Property Private m_Id As Integer Public Property Valor() As Decimal Get Return m_Valor End Get Set m_Valor = Value End Set End Property Private m_Valor As Decimal End Class
Maior, Menor e Média:
Dim listaTeste As New List(Of ClasseTeste)() listaTeste.Add(New ClasseTeste() With { _ Key .Id = 1, _ Key .Valor = 10 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 2, _ Key .Valor = 20 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 3, _ Key .Valor = 30 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 4, _ Key .Valor = 40 _ }) Dim maiorValor As Decimal = listaTeste.Max(Function(t) t.Valor) Dim menorValor As Decimal = listaTeste.Min(Function(t) t.Valor) Dim mediaValor As Decimal = listaTeste.Average(Function(t) t.Valor)
- Marcado como Resposta Maxjv quarta-feira, 26 de novembro de 2014 13:45
Todas as Respostas
-
Ex média:
lista.Select(x=> x.propriedade).ToList().Average();
Ex. max ou min:
Ordenas as listas pelo que queres da forma que queres ( asc ou desc) e seleccionas o primeiro da lista ou o ultimo.
Não esqueça de marcar o post como útil caso tenha te ajudado.
- Editado Marco_5 quarta-feira, 26 de novembro de 2014 12:21
-
Maxjv, seria isso?
public class Teste
{
public int Valor1 { get; set; }
} List<Teste> testes = new List<Teste>();
testes.Add(new Teste { Valor1 = 1 });
testes.Add(new Teste { Valor1 = 2 });
testes.Add(new Teste { Valor1 = 5 });
var media = testes.Where(w => w.Valor1 == testes.Min(m => m.Valor1) || w.Valor1 == testes.Max(m => m.Valor1)).Average(a => a.Valor1);
- Editado GuilhermeGHN quarta-feira, 26 de novembro de 2014 12:23
-
Segue exemplo:
Public Class ClasseTeste Public Property Id() As Integer Get Return m_Id End Get Set m_Id = Value End Set End Property Private m_Id As Integer Public Property Valor() As Decimal Get Return m_Valor End Get Set m_Valor = Value End Set End Property Private m_Valor As Decimal End Class
Maior, Menor e Média:
Dim listaTeste As New List(Of ClasseTeste)() listaTeste.Add(New ClasseTeste() With { _ Key .Id = 1, _ Key .Valor = 10 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 2, _ Key .Valor = 20 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 3, _ Key .Valor = 30 _ }) listaTeste.Add(New ClasseTeste() With { _ Key .Id = 4, _ Key .Valor = 40 _ }) Dim maiorValor As Decimal = listaTeste.Max(Function(t) t.Valor) Dim menorValor As Decimal = listaTeste.Min(Function(t) t.Valor) Dim mediaValor As Decimal = listaTeste.Average(Function(t) t.Valor)
- Marcado como Resposta Maxjv quarta-feira, 26 de novembro de 2014 13:45
-