C# ASP.NET实体框架LINQ to实体无法识别方法';System.DateTime ToDateTime(System.String)

C# ASP.NET实体框架LINQ to实体无法识别方法';System.DateTime ToDateTime(System.String),c#,asp.net,entity-framework,linq,C#,Asp.net,Entity Framework,Linq,我基本上是在试图建立一个按月份和年份分组的日期“档案”。然而,我的问题是数据库中的日期是字符串…不是我的选择 这是我获取日期组列表的代码 var dates = dbBlog.Data .GroupBy(o => new { Month = Convert.ToDateTime(o.date).Month, Year = Convert.ToDat

我基本上是在试图建立一个按月份和年份分组的日期“档案”。然而,我的问题是数据库中的日期是字符串…不是我的选择

这是我获取日期组列表的代码

var dates = dbBlog.Data
                .GroupBy(o => new
                {
                    Month = Convert.ToDateTime(o.date).Month,
                    Year = Convert.ToDateTime(o.date).Year
                })
                .Select(g => new BlogArchiveClass
                {
                    Month = g.Key.Month,
                    Year = g.Key.Year,
                    Total = g.Count()
                })
                .OrderByDescending(a => a.Year)
                .ThenByDescending(a => a.Month)
                .ToList();
但当我使用它时,我会得到以下错误:

LINQ to Entities does not recognize the method 'System.DateTime ToDateTime(System.String)

如何从数据库中完成字符串日期的操作?

如果您知道字符串的格式,则可能可以执行如下操作:

var dates = dbBlog.Data
            Select(d => new 
            {
                 Month = d.Month.Substring(....),
                 Year  = d.Year.Substring(....)
            })
            .GroupBy(o => new { o.Month,o.Year})
            .Select(g => new BlogArchiveClass
            {
                Month = g.Key.Month,
                Year = g.Key.Year,
                Total = g.Count()
            })
            .OrderByDescending(a => a.Year)
            .ThenByDescending(a => a.Month)
            .ToList();

如果您知道字符串的格式,那么您可能可以执行如下操作:

var dates = dbBlog.Data
            Select(d => new 
            {
                 Month = d.Month.Substring(....),
                 Year  = d.Year.Substring(....)
            })
            .GroupBy(o => new { o.Month,o.Year})
            .Select(g => new BlogArchiveClass
            {
                Month = g.Key.Month,
                Year = g.Key.Year,
                Total = g.Count()
            })
            .OrderByDescending(a => a.Year)
            .ThenByDescending(a => a.Month)
            .ToList();

我不明白…什么代替了
也不包含月份或年份(我的类不包含它们)@user979331我想他在想
o.Date
是字符串中相应日期部分的
开始,长度
(当格式固定时,您可以计算它们)。如果格式不固定,你就倒霉了。这正是我的意思。谢谢。事实上,如果您的日期格式是固定的,您可以选择使用子字符串提取月份和年份的值,或者如果目标数据库仅限于SqlServer,您可以尝试。我唯一不明白的部分是我将o.date放在何处。我不明白…什么替代了
也不包含月份或年份(我的类不包含它们)@用户979331我想他心里想的是
o.Date
是字符串中相应日期部分的
开始,长度
(当格式固定时,您可以计算它们)。如果格式不固定,你就倒霉了。这正是我的意思。谢谢。事实上,如果您的日期格式是固定的,您可以选择使用子字符串提取月份和年份的值,或者如果目标数据库仅限于SqlServer,您可以尝试。我唯一不了解的部分是我将o.date放在何处?请尽您所能使数据库设计正确。不要满足于“不可能”。日期作为字符串将是一个持续的难题。尽你所能使数据库设计正确。不要满足于“不可能”。作为字符串的日期将是一个持续的痛苦的脖子。