2012-09-27 53 views
0

我發現有幾個線程已經處理了這個問題。雖然,它們不在對我有用的環境中。非常多,我試圖將DateTime轉換爲字符串,以便將其呈現爲MVCContrib網格。以下是我的模型內部的情況:LINQtoSQL不允許日期時間轉換爲字符串

public IQueryable<FindStudentViewModel> GetStudentsProjected() 
    { 
     var projectedStudents= from p in FindAllStudents() 
           select new FindStudentViewModel 
           { 
            StudentID = p.StudentID, 
            FirstName = p.FirstName, 
            LastName = p.LastName, 
            EmailAddress = p.EmailAddress, 
            CurrentCollege = p.CurrentCollege, 
            IAUTerm = p.IAUTerm, 
            IAUProgram = p.IAUProgram, 
            InquirySource = p.InquirySource, 
            InquiryDate = (string)p.InquiryDate.ToString(), 
            Status = p.Status 

           }; 

     return projectedStudents; 
    } 

當然,LINQ不喜歡這一點。相當多,我需要能夠將InquiryDate轉換爲字符串,然後通過InquiryDate對結果進行排序。先謝謝你。

+0

你的代碼有什麼錯誤? –

+0

爲什麼要將'p.InquiryDate'轉換爲字符串,然後調用'ToString()?' – MyCodeSucks

+0

這是它編譯的唯一方法。這裏是錯誤:title> LINQ to Entities不能識別方法'System.String ToString()'方法,並且此方法不能被轉換爲存儲表達式。 –

回答

2

訂購字符串 DateTime的表示可能不是一個很好的計劃。請看下面的日期:

5/4/2007 
9/12/2011 
6/4/1904 

如果您需要他們時,他們是DateTime類型,你會得到:

6/4/1904 
5/4/2007 
9/12/2012 

如果您使用它們.ToString(),那麼爲了它,你會得到:

var dates = new DateTime[] { new DateTime(2012, 9, 12), new DateTime(1904, 6, 4), new DateTime(2007, 5, 4) }; 
foreach (var item in dates.OrderBy(d => d)) 
{ 
    Console.WriteLine(item); 
} 

Console.WriteLine(); 
var temp = dates.Select(d => d.ToString()); 
foreach (var item in temp.OrderBy(d => d)) 
{ 
    Console.WriteLine(item); 
} 

5/4/2007 
6/4/1904 
9/12/2011 

代碼與測試

+1

我沒有將它轉換爲字符串,而是採用了Gromer的建議,並將它保留爲DateTime。 –

+0

當你把它保存爲DateTime時,你可以訪問.Net DateTime對你的所有精彩,特別是如果你打算顯示這些數據的話。 – Gromer

相關問題