Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin.Forms Daily Count中显示条形图_C#_Xamarin_Xamarin.forms - Fatal编程技术网

C# 在Xamarin.Forms Daily Count中显示条形图

C# 在Xamarin.Forms Daily Count中显示条形图,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在与Xamarin.Forms合作,我正在使用Microcharts创建条形图 我正试图制作一个条形图,显示本周从周一到周日每天输入的图书数量 但是,当用户在星期日查看页面时,条形图仅显示星期日的计数,因为它显示的是周一至周六的下一周天数 相反,条形图应显示本周周一至周日的数据 var days = Enum.GetValues(typeof(DayOfWeek)).OfType<DayOfWeek>().OrderBy(day => day < DayOfWeek.

我正在与Xamarin.Forms合作,我正在使用Microcharts创建条形图

我正试图制作一个条形图,显示本周从周一到周日每天输入的图书数量

但是,当用户在星期日查看页面时,条形图仅显示星期日的计数,因为它显示的是周一至周六的下一周天数

相反,条形图应显示本周周一至周日的数据

var days = Enum.GetValues(typeof(DayOfWeek)).OfType<DayOfWeek>().OrderBy(day => day < DayOfWeek.Monday);
var dailyBookCounts =  new Dictionary<string, int>();
foreach (var day in days)
{
    var specificDayAtMidnight = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek + (int)day);
    var bookCount = App.Database.GetDailyCount(specificDayAtMidnight);
    dailyBookCounts.Add(day.ToString("G"), bookCount);
}

var entries = new List<ChartEntry>();
foreach (var (nameOfTheDay, bookCountOfTheDay) in dailyBookCounts)
{
    entries.Add(new ChartEntry(bookCountOfTheDay)
    {
        Label = nameOfTheDay,
        ValueLabel = bookCountOfTheDay.ToString(),
        Color = SKColor.Parse("#004daa")
    });
}

chartView.Chart = new BarChart
{
    Entries = entries, 
    LabelTextSize = 32f, 
    LabelOrientation = Orientation.Horizontal, 
    ValueLabelOrientation = Orientation.Horizontal, 
    Margin = 20
};
Database.cs:

public int GetDailyCount(DateTime day)
{
     var dayAfterCurrentDay = day.AddDays(1); 
     return database.ExecuteScalar<int>("SELECT COUNT(*) FROM Book WHERE bookSaveTime> ? AND bookSaveTime< ?;", day, dayAfterCurrentDay);   
}

如何更改此设置,使条形图显示本周周一至周日的数据,而不是在周日查看页面时显示接下来几周的数据?

您没有正确计算本周的天数。您可以使用此中的扩展方法来执行此操作

// get the first day of current week, starting Monday at 12:00AM
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Monday);

for (var d = 0; d < 7; d++)
{
  var specificDayAtMidnight = dt.AddDays(d);
  var bookCount = App.Database.GetDailyCount(specificDayAtMidnight);
  dailyBookCounts.Add(specificDayAtMidnight.ToString("G"), bookCount);
}