[英]How to use Convert.ToDateTime in LINQ C#
我有一個關於 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()
};
請參閱下面的錯誤消息。
問題是它是一個 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>
替換為正確的格式。
IQueryable<T>
在數據庫中進行查詢,您會收到此異常,因為您的數據庫中沒有映射到Convert.ToDateTime
的 function。 嘗試IEnumerable<T>
代替。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.