我所拥有的是一组具有加入日期的用户,我想使用GoogleChartSharp创建一个图表,显示每月有多少用户加入。
所以我在列表中有这组日期(美国格式):
01/01/2009
02/01/2009
02/12/2009
03/02/2009
03/12/2009
2009年3月22日
Googlechartsharp要求我做这样的事情:
string[] monthYears = new string[] { "01/2009", "02/2009", "03/2009"};
int[] number= new int[] {1,2,3};
LineChart chart = new LineChart(150, 150);
chart.SetData(data);
chart.SetLegend(monthYears);
string url = chart.GetUrl();
如何利用linq将日期列表添加到谷歌所需的数组中?或者Linq甚至是正确的工具?
答案 0 :(得分:2)
当然,Linq是一个理想的工具。下面的代码就是一个例子。 (我在日期中指定了月份,因此在设置输入数组时我不必使用DateTime.ParseExact。)
DateTime[] dates =
{
DateTime.Parse("jan/01/2009")
,DateTime.Parse("feb/01/2009")
,DateTime.Parse("feb/12/2009")
,DateTime.Parse("mar/02/2009")
,DateTime.Parse("mar/12/2009")
,DateTime.Parse("mar/22/2009")
};
var datesGroupedByMonthYear = from date in dates
group date by date.ToString("MM/yyyy") into groupedDates
orderby groupedDates.First() ascending
select new { MonthYear = groupedDates.Key, Dates = groupedDates };
string[] monthYears = (from d in datesGroupedByMonthYear select d.MonthYear).ToArray();
int[] number = (from d in datesGroupedByMonthYear select d.Dates.Count()).ToArray();
答案 1 :(得分:0)
告诉那些数字是每个月发生的次数。然后你可以做这样的事情:
var numbers = from d in monthYears .Select(x => DateTime.Parse(x))
group d by d.Month into dg
select dg.Count();
这将为您提供每个的IEnumerable计数。如果你需要它作为数组,那么将它转换为数组并不是很难。