link用循环计算两个日期之间有多少工作日

用循环计算两个日期之间有多少工作日,link怎么实现?用takewhile怎么代替while?

不考虑过节和轮休,写一个给你

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var dt1 = new DateTime(2014, 12, 1);
            var dt2 = DateTime.Now;
            var query = EnumDate(dt1).TakeWhile(x => x < dt2).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
            foreach (var item in query)
                Console.WriteLine(item);
        }

        static IEnumerable<DateTime> EnumDate(DateTime dt)
        {
            while (true)
            {
                yield return dt;
                dt = dt.AddDays(1);
            }
        }
    }
}

2014/12/1 0:00:00
2014/12/2 0:00:00
2014/12/3 0:00:00
2014/12/4 0:00:00
2014/12/5 0:00:00
2014/12/8 0:00:00
2014/12/9 0:00:00
2014/12/10 0:00:00
2014/12/11 0:00:00
2014/12/12 0:00:00
2014/12/15 0:00:00
2014/12/16 0:00:00
2014/12/17 0:00:00
2014/12/18 0:00:00
2014/12/19 0:00:00
2014/12/22 0:00:00
2014/12/23 0:00:00
2014/12/24 0:00:00
2014/12/25 0:00:00
2014/12/26 0:00:00
2014/12/29 0:00:00
2014/12/30 0:00:00
2014/12/31 0:00:00
2015/1/1 0:00:00
2015/1/2 0:00:00
请按任意键继续. . .

其实还是要循环的,只是包装在了EnumDate里面

2014/12/1 0:00:00
2014/12/2 0:00:00
2014/12/3 0:00:00
2014/12/4 0:00:00
2014/12/5 0:00:00
2014/12/8 0:00:00
2014/12/9 0:00:00
2014/12/10 0:00:00
2014/12/11 0:00:00
2014/12/12 0:00:00
2014/12/15 0:00:00
2014/12/16 0:00:00
2014/12/17 0:00:00
2014/12/18 0:00:00
2014/12/19 0:00:00
2014/12/22 0:00:00
2014/12/23 0:00:00
2014/12/24 0:00:00
2014/12/25 0:00:00
2014/12/26 0:00:00
2014/12/29 0:00:00
2014/12/30 0:00:00
2014/12/31 0:00:00
2015/1/1 0:00:00
2015/1/2 0:00:00
请按任意键继续. . .

或者这样写

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var dt1 = new DateTime(2014, 12, 1);
var dt2 = DateTime.Now;
var query = Enumerable.Range(0, (int)new TimeSpan(dt2.Ticks - dt1.Ticks).TotalDays + 1).Select(x => dt1.AddDays(x)).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
foreach (var item in query)
Console.WriteLine(item);
}
}
}

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var dt1 = new DateTime(2014, 12, 1);
            var dt2 = DateTime.Now;
            var query = Enumerable.Range(0, (int)new TimeSpan(dt2.Ticks - dt1.Ticks).TotalDays + 1).Select(x => dt1.AddDays(x)).Where(x => x.DayOfWeek != DayOfWeek.Sunday && x.DayOfWeek != DayOfWeek.Saturday);
            foreach (var item in query)
                Console.WriteLine(item);
        }
    }
}