数组查找当前日期之前的所有日期

时间:2014-10-06 21:12:06

标签: c# arrays datetime

您好我正在尝试array.find当前日期之前的所有日期。我已经尝试使用datetime.now以及在我的结构中为当前日期创建一个单独的变量,但我一直得到“不能隐式地将类型'Assignment_3.Program.Hire'转换为'System.DateTime'。我确信解决方案很简单,但作为一个新手,它确实逃脱了我。如果您需要更多代码,我将很乐意提供

 struct Hire
    {
        public int CustomerNo;
        public int DVDNo;
        public DateTime HireDate;
        public int NoNights;
        public DateTime CurrentDate = DateTime.Now;
    }


 DateTime result = Array.Find(hiredetails, Hire => Hire.HireDate <= Hire.CurrentDate);

2 个答案:

答案 0 :(得分:3)

Array.Find<T>返回符合条件的元素。在您的情况下,因为它是Hire类型的数组,它将返回Hire类型的元素,您无法将其分配给DateTime。你可以这样做:

List<DateTime> allDates = hiredetails.Where(hire=> hire.HireDate <= hire.CurrentDate)
                          .Select(r=> r.HireDate)
                          .ToList();

您也可以从上述声明中返回IEnumerable<DateTime>并排除ToList()

不确定您是否需要此功能,但不是将当前日期保留在对象中,而是将其保存在本地变量中,并将其传递给查询中,如:

DateTime currentDate = DateTime.Now;
List<DateTime> allDates = hiredetails.Where(hire=> hire.HireDate <= currentDate)
                          .Select(r=> r.HireDate)
                          .ToList();

答案 1 :(得分:0)

不要在结构中存储当前日期,而是使用局部变量,解决方案看起来像:

var currentDate = DateTime.Now;
var result = hiredetails.Select(h => h.HireDate).Where(d => d <= currentDate);