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

Linq ?...


       DateTime d1 = new DateTime(2014, 2, 1);
       DateTime d2 = new DateTime(2014, 3, 28);
       
       DateTime TempD = d1;
       List<string> L = new List<string>();

       for(int i = 0 ;i<= d2.Subtract(d1).Days  ;i++)
       {
         //如果这一天不等于星期六并且也不等于星期天。。。
         if(TempD.DayOfWeek != DayOfWeek.Saturday & TempD.DayOfWeek != DayOfWeek.Sunday )
         {
             L.Add(TempD.Year + "." + TempD.Month + "." + TempD.Day  + "   " + TempD.DayOfWeek);
         }

         TempD = TempD.AddDays(1);
       }

       for (int i = 0; i < L.Count ; i++)
       {
         Console.WriteLine(L[i]);
       }


我想获得一指定日期段内不为星期六并且也不为星期天的日期的字符串表示列表,要求使用Linq/lambda,怎么做?
------解决方案--------------------
dt.Select(x=>这里判断x字段值是否六日)
------解决方案--------------------

public static IEnumerable<DateTime> GetDatesBetween(DateTime d1, DateTime d2)
{
    while (d1 <= d2)
    {
        yield return d1;
        d1 = d1.AddDays(1);
    }
}
//...........
var result = GetDatesBetween(new DateTime(2014, 2, 1), new DateTime(2014, 3, 28))
    .Where(a => a.DayOfWeek != DayOfWeek.Saturday && a.DayOfWeek != DayOfWeek.Sunday).ToList();
result.ForEach(a =>
{
    Console.WriteLine(a);
});

------解决方案--------------------
List<string> L = Enumerable.Range(0, d2.Subtract(d1).Days).Select(x => DateTime(2014, 2, 1).AddDays(x))
.Where(tempD => TempD.DayOfWeek != DayOfWeek.Saturday & TempD.DayOfWeek != DayOfWeek.Sunday)
.Select(tempD => TempD.Year + "." + TempD.Month + "." + TempD.Day  + "   " + TempD.DayOfWeek).ToList();
------解决方案--------------------
	   var L= Enumerable.Range(0, d2.Subtract(d1).Days+1)
   .Select((x,i)=>new {date=d1.AddDays(i).ToString("yyyy.MM.dd"), d1.AddDays(i).DayOfWeek}) 
   .Where(t=>t.DayOfWeek!=DayOfWeek.Saturday &&am