Thuộc tính TimeOfDay không được hỗ trợ trong LINQ to Entities để bạn có thể thử sử dụng phương pháp SqlFunctions.DatePart để thay thế.
Bạn có lẽ cũng nên chuyển đổi TimeSpans của bạn thành DateTimes.
Tôi nghĩ rằng điều này sẽ làm việc (giả sử các timespans là từ sự khởi đầu của một ngày):
var now = DateTime.Now;
var today = new DateTime(now.Year, now.Month, now.Day);
var endDateTime = today + endTime;
var startDateTime = today + startTime
var timeCapturesQuery = Context.TimeCaptures.Where(t =>
SqlFunctions.DatePart("timeofday", t.StartDateTime) < SqlFunctions.DatePart("timeofday", endDateTime)
&& SqlFunctions.DatePart("timeofday", t.EndDateTime) > SqlFunctions.DatePart("timeofday", startDateTime));
Sửa
Như đã đề cập trong các ý kiến các TimeOfTheDay tài sản cụ thể không được hỗ trợ trong phương pháp DATEPART .
lẽ EntityFunctions.DiffNanoseconds phương pháp sẽ làm việc:
var now = DateTime.Now;
var today = new DateTime(now.Year, now.Month, now.Day);
var endDateTime = today + endTime;
var startDateTime = today + startTime
var timeCapturesQuery = Context.TimeCaptures.Where(t =>
EntityFunctions.DiffNanoseconds(t.StartDateTime, endDateTime).Value < 0
&& EntityFunctions.DiffNanoseconds(t.EndDateTime, startDateTime).Value > 0);
Edit2
Một tùy chọn khác là đơn giản hơn nhiều và tôi nghĩ sẽ làm việc chỉ là để so sánh DateTimes.
Chúng tôi đã chuyển đổi TimeSpans thành DateTimes và chúng ta có thể tạo điều kiện đơn giản bằng LINQ to Entities và nó sẽ hoạt động vì chúng tôi không sử dụng bất kỳ thuộc tính DateTimes nào.
var now = DateTime.Now;
var today = new DateTime(now.Year, now.Month, now.Day);
var endDateTime = today + endTime;
var startDateTime = today + startTime
var timeCapturesQuery = Context.TimeCaptures.Where(t => t.StartDateTime < endDateTime && t.EndDateTime > startDateTime);
Xin lỗi nhưng tôi không thấy làm thế nào mà có thể giúp đỡ. Bạn đang chuyển đổi DateTime thành một chuỗi sau đó quay trở lại một DateTime sau đó gọi thuộc tính mà ném lỗi. Cũng nên nhớ rằng StartDateTime là một cột trên một bảng, không phải là một tham số. –
Những gì Paul [đã nói] (http://stackoverflow.com/questions/32756662/timeofday-is-not-supported-in-linq-to-entities-find-total-seconds-in-linq-2) có thể hoạt động. – Berkay
Điều gì về [Giải pháp] này (http://stackoverflow.com/a/21289257/5460854) – CodeMaster