您好我正在尝试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);
答案 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);