我有一個LINQ查詢從表中提取數據,我想,被賦予一個日期,將其轉換爲星期(例如,它是一年中的哪一週)。MVC LINQ不被識別的方法
var query = from booking in context.BookingTables
join transport in context.TransportAllotments on booking.TransportAllotmentID equals transport.TransportAllotmentID
join passenger in context.Passengers on booking.BookingID equals passenger.BookingID
join result in context.QuestionaireResults on passenger.PassengerID equals result.PassengerID
join question in context.QuestionaireQuestions on result.QuestionaireQuestionID equals question.QuestionaireQuestionID
where transport.DepartureDate >= startDate && transport.DepartureDate <= endDate && booking.BookingID == id
select new QuestionaireDetailsDTO()
{
ID = booking.BookingID,
Date = transport.DepartureDate,
Question = question.QuestionText,
Week = GetWeekOfYear(transport.DepartureDate)
};
而且GetWeekofYear功能:
private int GetWeekOfYear(DateTime d)
{
var cal = System.Globalization.DateTimeFormatInfo.CurrentInfo.Calendar;
return cal.GetWeekOfYear(new DateTime(d.Year, d.Month, 1), System.Globalization.CalendarWeekRule.FirstDay, System.DayOfWeek.Sunday);
}
在當前狀態下,當我試圖測試(使用郵差/小提琴手)我收到以下錯誤:
LINQ to Entities does not recognize the method 'Int32 GetWeekOfYear(System.DateTime)' method, and this method cannot be translated into a store expression
你需要物化你先查詢內存 - var query =(from booking ..... where ....).ToList()。Select(x => new QuestionaireDetailsDTO(){....});' –
我已經通過在對象中設置了一個getter來解決它,但我還有另外一個問題。我怎樣才能阻止序列化爲一些對象屬性json和只有序列化,如果我想?我試過[IgnoreDataMember],但似乎並沒有做到這一點,因爲我想。 @StephenMuecke – Florin
你需要提出一個新的問題和相關的細節。 –