1

たとえば、次のDateTimeようなリストがあります。

List<DateTime> timeList;

リピーターを使用して、以下のようなテーブルを作成します。

YEAR    MONTH           DATES
2012    SEPTEMBER   08  15  22  29
2012    OCTOBER     06  20  27   
2012    NOVEMBER    10           
2012    DECEMBER    08           
2013    MAY         04  18       
2013    JUNE        01  15  29   
2013    JULY        13  27       
2013    AUGUST      10  24       
2013    SEPTEMBER   07  21       
2013    OCTOBER     05  19  

しかし、日付をグループ化することはできません。リピーターを使用してこれを達成するにはどうすればよいですか?

4

2 に答える 2

3

まず、データを保持するクラスを作成します。

public class DateInfo
{       
    public int Year { get; set; }
    public string Month { get; set; }
    public IEnumerable<int> Days { get; set; }

    public string DisplayDayList
    {
        get
        {
            return string.Join(" ", Days.Select(x=>x.ToString()).ToArray()); //sorry, i'm doing .net 3.5
        }
    }
}

次に、年/月ごとにグループ化して、リストをバインドできます。

List<DateTime> dtList = new List<DateTime>();
List<DateInfo> dateInfoList = 
    (from dt in dtList
     group dt by new { dt.Year, dt.Month } into g
     select new DateInfo()
     {
         Year = g.Key.Year,
         Month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Key.Month),
         Days = g.Select(x => x.Day)
     }).ToList();

次に、新しいリスト オブジェクトを使用してバインドし、、、、および列のみをバインドYearMonthますDisplayDayList

于 2013-05-03T16:38:55.303 に答える
2

このクエリを使用してグループ化できます

var query = from t in timeList
            group t by new { t.Year, t.Month } into g
            select new { Month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(g.Key.Month), 
            Year = g.Key.Year, 
            Dates = g.Select(t => t.Day) };
于 2013-05-03T16:08:26.180 に答える