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

时间:2017-01-31 21:15:22

标签: c# asp.net entity-framework linq

我基本上是在尝试一个" Archives"按月和年分组的日期。但是我的问题是数据库中的日期是字符串......不是我的选择。

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

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)

我怎么能用数据库中的字符串日期来完成我正在做的事情?

1 个答案:

答案 0 :(得分:2)

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

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();