Вы создаете новую диаграмму для каждого элемента, поэтому вы получаете только последний элемент.
Что вам нужно, это вывести диаграмму входа из цикла for и создать ее один раз свсе записи:
if (ID != "")
{
Empresa empresa = App.BD.ObtenerEmpresa(ID);
var reportes = App.BD.ObtenerReportes(ID);
var random = new Random();
chart1.Chart = new DonutChart()
{
Entries = reportes
.Select(x => new Entry(float.Parse(x.Mejora))
{
Label = x.FechaReporte.ToString(),
Color = SKColor.Parse($"#{random.Next(0x1000000):X6}"),
ValueLabel = x.Mejora
})
.ToArray()
};
}
Вот более простая версия, которая поможет вам понять: (оба эквивалентны)
if (ID != "")
{
Empresa empresa = App.BD.ObtenerEmpresa(ID);
var reportes = App.BD.ObtenerReportes(ID);
var random = new Random();
var entries = new List<Entry>();
foreach (var CurrentData in reportes)
{
var color = String.Format("#{0:X6}", random.Next(0x1000000));
entries.Add(new Entry(float.Parse(CurrentData.Mejora))
{
Label = CurrentData.FechaReporte.ToString(),
Color = SKColor.Parse(color),
ValueLabel = CurrentData.Mejora
});
}
chart1.Chart = new DonutChart() { Entries = entries };
}
примечание: вы должны также использовать тот же Random
вместосоздавать новый каждый раз, когда вам это нужно.