2014-10-06 67 views
0

你好,我目前正在嘗試array.find當前日期之前的所有日期。我已經嘗試使用datetime.now以及在我的結構中爲當前日期創建一個單獨的變量,但我一直收到「不能隱式地將類型'Assignment_3.Program.Hire'轉換爲'System.DateTime'。我相信這個解決方案很簡單,但作爲一個新手,它確實從我身上逃脫了。如果您需要更多的代碼,我會很樂意提供Array查找當前日期前的所有日期

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); 

回答

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(); 
+2

看起來像我一個星期左右早,但如果我不跨你很快再次運行:歡迎到100K俱樂部。 – 2014-10-06 21:18:56

+0

@JoelCoehoorn,在此先感謝:) – Habib 2014-10-06 21:20:06

+0

我相信你錯過了'.Select',因爲hireDetails很可能是'Hire []'類型。 – 2014-10-06 21:24:44

0

不要存放當前日期的結構,使用本地變量代替,解決辦法是這樣的:

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