Функция «CreateTime» не поддерживается SQL Server Compact.

Я хотел изменить свой проект с кодом на SQL Server Compact 4.0.

Но у меня проблема со следующим выражением LINQ

db.Test.OrderBy(t => t.Name)
       .ThenBy(t => t.DayOfWeek)
       .ThenBy(t => DbFunctions.CreateTime(t.TimeFrom.Hour, t.TimeFrom.Minute, t.TimeFrom.Second))

Выдает следующую ошибку

Функция «CreateTime» не поддерживается SQL Server Compact.

Есть ли способ написать это выражение без использования метода CreateTime?


person Palmi    schedule 21.07.2015    source источник
comment
Можешь попробовать ThenBy(t => t.TimeFrom.Hour * 3600 + t.TimeFrom.Minute * 60 + t.TimeFrom.Second)?   -  person Ulugbek Umirov    schedule 21.07.2015
comment
Другой вариант — использовать ThenBy(t => t.TimeFrom.Hour).ThenBy(t => t.TimeFrom.Minute).ThenBy(t => t.TimeFrom.Second)   -  person Ulugbek Umirov    schedule 21.07.2015


Ответы (1)


Я использую сначала код с Sql Server Compact. В моей модели у меня есть свойство TimeStamp типа DateTime. Тогда я мог бы сделать:

db.Test.OrderBy(t => t.Name)
   .ThenBy(t => t.TimeStamp.DayOfWeek)
   .ThenBy(t => t.TimeStamp.Hour)
   .ThenBy(t => t.TimeStamp.Minute)
   .ThenBy(t => t.TimeStamp.Second)
   .ThenBy(t => t.TimeStamp.Millisecond);

or

db.Test.OrderBy(t => t.Name)
   .ThenBy(t => t.TimeStamp.Ticks);
person jbriggs    schedule 21.07.2015
comment
Я получаю сообщение об ошибке: указанный элемент типа «TimeOfDay» не поддерживается в LINQ to Entities. - person Palmi; 21.07.2015
comment
Я отредактировал свой ответ, чтобы использовать Hour, Minute... и т. д. вместо TimeOfDay. - person jbriggs; 01.08.2015