C# 在Xamarin.Forms Daily Count中显示条形图
我正在与Xamarin.Forms合作,我正在使用Microcharts创建条形图 我正试图制作一个条形图,显示本周从周一到周日每天输入的图书数量 但是,当用户在星期日查看页面时,条形图仅显示星期日的计数,因为它显示的是周一至周六的下一周天数 相反,条形图应显示本周周一至周日的数据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.
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);
}