0

この問題を扱っているスレッドをいくつか見つけました。ただし、それらは私にとって有用なコンテキストではありません。ほとんどの場合、MVCContrib グリッドにレンダリングするために、DateTime を文字列に変換しようとしています。私のモデルの内部は次のようになります。

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 で並べ替える必要があります。前もって感謝します。

4

1 に答える 1

2

DateTime の文字列表現で注文することは、あまり良い計画ではないかもしれません。次の日付を考慮してください。

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

タイプのときに注文すると、次のようになりDateTimeます。

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

それらを使用.ToString()してから注文すると、次のものが得られます。

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

テストするコード:

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);
}
于 2012-09-27T18:35:37.977 に答える