LINQtoSQL不允许DateTime转换为字符串

时间:2012-09-27 18:24:20

标签: c# linq-to-sql datetime

我找到了一些解决了这个问题的线程。但是,它们并不属于对我有用的环境。实际上,我正在尝试将DateTime转换为字符串,以将其呈现为MVCContrib网格。以下是我的模型中的内容:

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订购结果。提前谢谢。

1 个答案:

答案 0 :(得分: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);
}