Fui tentar usar essa função de media em outra tabela mas deu erro, não encontra a campo Total usada na clausula do orderby
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Fui tentar usar essa função de media em outra tabela mas deu erro, não encontra a campo Total usada na clausula do orderby
Olá, Maurici, você pode colar aqui o seu código, para podermos entender melhor o problema? Obrigado!
Olá Marcelo. Baixei o seu codigo fonte e vi onde estava o meu erro.
De qualquer forma agradeço a ajuda.
Muito Obrigado. E o seu treinamento está sendo bem proveitoso.
Codigo Errado:
public static decimal Mediana<TSource>(this IQueryable<TSource> origem, Expression<Func<TSource, decimal>> selector)
{
using (var contexto = new AluraTunesEntities())
{
int contagem = origem.Count();
var funcSeletor = selector.Compile();
var ordenado = contexto.NotasFiscais.Select(ag => ag.Total)
.OrderBy(total => total);
var elementoCentral_1 = ordenado.Skip((contagem - 1) / 2).First();
var elementoCentral_2 = ordenado.Skip(contagem / 2).First();
decimal mediana = (elementoCentral_1 + elementoCentral_2) / 2;
return mediana;
}
}
Codigo Correto:
public static decimal Mediana<TSource>(this IQueryable<TSource> origem, Expression<Func<TSource, decimal>> selector)
{
int contagem = origem.Count();
var funcSeletor = selector.Compile();
var ordenado = origem
.Select(selector)
.OrderBy(x=> x);
var elementoCentral_1 = ordenado.Skip((contagem - 1) / 2).First();
var elementoCentral_2 = ordenado.Skip(contagem / 2).First();
decimal mediana = (elementoCentral_1 + elementoCentral_2) / 2;
return mediana;
}
Muito bom, Maurici! E obrigado por prestigiar o nosso curso! ;-)