2009-11-20 32 views
5

Tôi đang cố gắng lấy chuỗi ngày được định dạng trực tiếp từ biểu thức truy vấn LINQ-to-Entities.LINQ-to-Entities: Định dạng Ngày trong biểu thức truy vấn chọn

nonBusinessDays = (from ac in db.AdminCalendar 
        where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
        select ac.MonthValue + "/" + ac.DayOfMonth + "/" + ac.FullYear).ToList(); 

Nhưng, tôi nhận được thông báo lỗi folloinw: "Unable to cast kiểu 'System.Nullable`1' gõ 'System.Object' LINQ to Entities chỉ hỗ trợ đúc mẫu Entity Data loại nguyên thủy.. "

Có cách nào để thực hiện việc này ngoài việc lặp qua tập kết quả không? Cảm ơn! Abe

Trả lời

9

Tôi tìm thấy một workaround:

nonBusinessDays = (from dt in 
          (from ac in db.AdminCalendar 
          where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
          select ac.DateTimeValue).ToList() 
        select string.Format("{0:M/d/yyyy}", dt)).ToList(); 
+1

Vấn đề bạn đang gặp phải là nó cố gắng dịch ToString vào SQL hợp lệ để thực hiện trên máy chủ - và sau đó nó không thực hiện được. Các truy vấn lồng nhau có nghĩa là bạn đang tách .ToString mà không thể được thực hiện từ truy vấn có thể và do đó nó hoạt động – Murph

+1

Cảm ơn! Bây giờ nó có ý nghĩa; LINQ đang cố gắng ánh xạ hàm tới hàm SQL, không tồn tại. Cách giải quyết của tôi là trước tiên lấy dữ liệu vào danh sách và xử lý danh sách từ đó. – Abe

+0

Tải trọng lười là thủ phạm. –

0

Hãy thử thay đổi lựa chọn của bạn để sử dụng ToString:

nonBusinessDays = (from ac in db.AdminCalendar 
        where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
        select ac.DateTimeValue.ToString("MM/dd/yyyy")).ToList(); 
+0

Thật không may, bạn cũng không thể chạy phương thức ToString; đây là ngoại lệ mà tôi nhận được: LINQ to Entities không nhận ra phương thức 'System.String ToString (System.String)' và phương thức này không thể được dịch sang biểu thức cửa hàng. – Abe

Các vấn đề liên quan