如何在LINQ C#中使用Convert.ToDateTime

iezvtpos  于 2022-12-06  发布在  C#
关注(0)|答案(2)|浏览(254)

我有一个关于EntityFrameWork/LINQ的问题,首先,我想从b.Datetime(数据类型是字符串)设置Year,所以我使用Convert.ToDateTime方法,但是发生了错误。
这是我的代码。

IQueryable<AlarmCount> alarmCount = from b in fatalalarminfo
                                    group b by new
                                    {
                                        GroupKey = b.Eqpid,
                                        Year = Convert.ToDateTime(b.DateTime).Year
                                     } into gbs
                                     orderby gbs.Key.Year, gbs.Key.GroupKey
                                     select new AlarmCount()
                                     {
                                         GroupKey = gbs.Key.GroupKey,
                                         Period = new Period(EnumPeriodType.YEAR, gbs.Key.Year),
                                         Amount = gbs.Count()
                                     };

请参阅下面的错误消息。

3df52oht

3df52oht1#

问题是它是一个IQueryable。这意味着您的linq查询将被转换为SQL,而它无法将Convert.ToDateTime转换为sql。您可以使用DateTime.ParseExact,它可以正确地转换为SQL。

IQueryable<AlarmCount> alarmCount = from b in fatalalarminfo
                                            group b by new
                                            {
                                                GroupKey = b.Eqpid,
                                                Year = DateTime.ParseExact(b.DateTime, "<format>", CultureInfo.InvariantCulture).Year
                                            } into gbs
                                            orderby gbs.Key.Year, gbs.Key.GroupKey
                                            select new AlarmCount()
                                            {
                                                GroupKey = gbs.Key.GroupKey,
                                                Period = new Period(EnumPeriodType.YEAR, gbs.Key.Year),
                                                Amount = gbs.Count()
                                            };

确保用正确的格式替换<format>

e3bfsja2

e3bfsja22#

IQueryable<T>在数据库中执行查询,您会得到此异常,因为您的数据库中没有Map到Convert.ToDateTime的函数。请尝试IEnumerable<T>

相关问题