Проблема в том, что класс CLR TimeSpan не имеет полного канонического сопоставления в LINQ to Entities. Это то, на что ссылается ваше исключение в предложении «... не может быть переведено в выражение хранилища ...» *
Для сценариев LINQ запросы к Entity Framework включают отображение определенных методов CLR на методы в базовом источнике данных с помощью канонических функций. Любые вызовы методов в запросе LINQ to Entities, которые явно не сопоставлены с канонической функцией, приводят к возникновению исключения NotSupportedException во время выполнения.
Источник: MSDN
TimeSpan является одним из таких случаев.
Есть как минимум два решения, и это ...
Используйте действительный оператор LINQ to SQL (т. Е. Только для канонических методов), чтобы получить полный набор результатов из базы данных; а затем используйте LINQ to Objects, чтобы отфильтровать полученные результаты. Фильтр LINQ to Objects должен содержать все неканонические методы, чтобы ваша фильтрация доставляла нужное подмножество данных.
Эвакуировать неканонические методы в хранимую процедуру (т. Е. Перевести на прямой SQL) и вызвать хранимую процедуру.
Третьим решением будет попытка обернуть неканонические выражения в закрытый метод в классе обслуживания вашего домена. Это то, что я сделал, прежде чем докопаться до этого неуловимого исключения.
Четвертый и более неясный подход дан здесь