我有一个关于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()
};
请参阅下面的错误消息。
2条答案
按热度按时间3df52oht1#
问题是它是一个IQueryable。这意味着您的linq查询将被转换为SQL,而它无法将Convert.ToDateTime转换为sql。您可以使用
DateTime.ParseExact
,它可以正确地转换为SQL。确保用正确的格式替换
<format>
。e3bfsja22#
IQueryable<T>
在数据库中执行查询,您会得到此异常,因为您的数据库中没有Map到Convert.ToDateTime
的函数。请尝试IEnumerable<T>
。