private void OnSelectAccount(object obj) { Account item = obj as Account; if (item != null) { var payments = new ObservableCollection <Payment>(_payments.GetPaymentsByAccountId(item.Id)); var items = payments.SelectMany(p => p.PaymentItems).ToList(); var serviceNames = items.Select(pi => pi.Service.Name).Distinct(); var serCollection = new SeriesCollection(); var sumAll = items.Select(pi => pi.Amount).Sum(); foreach (var name in serviceNames) { var sum = items.Where(pi => pi.Service.Name == name).Select(pi => pi.Amount).Sum(); var pieSeries = new PieSeries(); pieSeries.Title = string.Format("{0}: {1} ({2:P})", name, sum, sum / sumAll); pieSeries.Values = new ChartValues <ObservableValue> { new ObservableValue(Convert.ToDouble(sum)) }; pieSeries.DataLabels = sum / sumAll > 0.05M; pieSeries.LabelPosition = PieLabelPosition.InsideSlice; pieSeries.LabelPoint = chartPoint => name; serCollection.Add(pieSeries); } SeriesCollection = serCollection; RaisePropertyChanged(() => SeriesCollection); } }