日期:2014-05-16  浏览次数:20436 次

求教一个数据转换问题
我数据库 有  2014年1月,2014年2月2014年3月,2014年4月,2014年12月  和  201401,201402,201403,201404 
的数据 
怎么 将这些数据 转换为 
当相连月份时 显示为 2014年(1-3)月,2014年(1-12)月, 2012年(2-12)月2013年(1-12)月 这样的格式
------解决方案--------------------

using System;
using System.Linq;
using System.Collections.Generic;
using System.Globalization;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var samples = new string[] { 
                "2013年11月", "2013年12月", "2014年1月","2014年2月","2014年3月","2014年4月","2014年12月",
                "201401","201402","201403","201404"
            };

            var results = Convert(samples);
            foreach (var item in results)
            {
                Console.WriteLine(item);
            }
        }

        static IEnumerable<string> Convert(IEnumerable<string> dates)
        {
            var formats = new string[] { "yyyy年M月", "yyyyMM" };
            var sampleDates = dates.Select(
                str => DateTime.ParseExact(str, formats, null, DateTimeStyles.None)
                )
                .Distinct()
                .OrderBy(d => d);

            if (sampleDates.Any())
            {
                DateTime? start = null;
                DateTime? cursor = start;
                foreach (var item in sampleDates)
                {
                    if (start == null)
                 &nbs