I've done an algorithm example for you to apply, but you'll need to replace it with your tables.
I created a class that represents the data that will be returned by the query:
public class Soma
{
public Soma() { }
public Soma(int periodo, decimal valor)
{
Periodo = periodo;
Valor = valor;
}
public int Periodo { get; set; }
public decimal? Valor { get; set; }
public string DescricaoMes
{
get
{
switch (Periodo)
{
case 1:
return "Janeiro";
case 2:
return "Fevereiro";
case 3:
return "Março";
case 4:
return "Abril";
case 5:
return "Maio";
case 6:
return "Junho";
case 7:
return "Julho";
case 8:
return "Agosto";
case 9:
return "Setembro";
case 10:
return "Outubro";
case 11:
return "Novembro";
case 12:
return "Dezembro";
default:
return string.Empty;
}
}
}
}
The query would look something like this:
var result = tabela1.Join(tabela2,
tabela1Alias => tabela1Alias.Identificador,
tabela2Alias => tabela2Alias.Identificador,
(tabela1Alias, tabela2Alias) => new
{
tabela1Alias.Periodo,
tabela2Alias.Valor
})
.GroupBy(a => a.Periodo)
.Select(s => new Soma
{
Periodo = s.Key,
Valor = s.Sum(a => a.Valor.HasValue ? a.Valor : 0)
}).ToList();