微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从API填充微图获取响应\可观察的集合

如何解决从API填充微图获取响应\可观察的集合

我有一个工作的API,该API返回“班次”的集合(请在时间表的背景下考虑) 如以下摘录中突出显示的那样,已成功从API返回了数据。

[{"id":1006,"wI_Date":"2020-05-01T00:00:00","wI_Start_Time":"2020-05-01T08:00:00","wI_End_Time":"2020-05-01T17:00:00","name":"Surgery 1","rate":60.0000,"paid":"N         ","revenue":"540       "},{"id":1007,"wI_Date":"2020-05-04T00:00:00","wI_Start_Time":"2020-05-04T08:00:00","wI_End_Time":"2020-05-04T17:00:00","name":"Medical Surgery 2","rate":45.0000,"revenue":"405       "},{"id":1008,"wI_Date":"2020-05-07T00:00:00","wI_Start_Time":"2020-05-07T08:00:00","wI_End_Time":"2020-05-07T17:00:00","name":"TEST Medical Surgery","revenue":"405"}]

我在整个日历年内(通过“ wI_Date”)的回报中都有100条记录,实际上随着时间的流逝,数据集的增长也将跨越多年。

我正在尝试找出如何按月\年对记录进行分组,因此可以将它们添加到Micorcharts.Bargraph的条目列表中-而无需在后端进行分组。 然后,它想总结该月的“收入”值,然后将该值作为条目传递给我的图表

班次定义为:

public class Shift
    {
        [PrimaryKey,AutoIncrement]
        public int Id { get; set; }
        public DateTime WiDate { get; set; }
        public DateTime WiStartTime { get; set; }
        public DateTime WiEndTime { get; set; }
        public int Practice { get; set; }
        public string Rate { get; set; }
        public string Paid { get; set; }
        public string Revenue { get; set; }
    }

我对API的调用如下:

var content = await _client.GetStringAsync(URL);
var shifts= = JsonConvert.DeserializeObject<List<Shift>>(content);

OShifts = new  ObservableCollection<Shift>(shifts);

所以我有一个成功的ObservableCollection。.我难以按年/日期进行分组,以添加到Micorcharts.Bargraph的条目中。

下面提供帮助的是一个如何填充图表的硬示例。

private List<Entry> _entries = new List<Entry>
        {
            new Entry(200)
            {
                Color = SKColor.Parse("#3333FF"),Label = "TEST LABEL 1",ValueLabel = "200",},new Entry(400)
            {
                Color = SKColor.Parse("#FF141F"),Label = "TEST LABEL 2",ValueLabel = "400",new Entry(300)
            {
                Color = SKColor.Parse("#49FF33"),Label = "TEST LABEL 3",ValueLabel = "300",MyBarChart.Chart = new BarChart { Entries = _entries };

任何人都有想法或示例代码。.

谢谢阅读。

解决方法

您可以这样做

var groupedShifts = 
    OShifts.GroupBy(sh => new { sh.WiDate.Year,sh.WiDate.Month },(key,group)=>new {
            Period=`${key.Year}-${key.Month}`
            SumRevenue = group.Sum(sh=>Decimal.Parse(sh.Revenue))
   }).ToList();

我认为您的Shift.Revenue是安全的十进制值,不能再是其他值。 在这里,我返回一个对象列表,每个对象都有一个Period和SumRevenue,但是您可以根据需要自定义返回。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。