Если предположить, что t.Date
имеет значение nullable (DateTime?
), это может быть проблемой, попробуйте использовать:
from t in ctx.table select (t.HasValue ? t.Date.Value.ToString("yyyy-MM-dd") : string.Empty );
Редактировать: ОК, вторая попытка ...
Проблема заключается в преобразовании в SQL, которое пытается преобразовать .ToString()
в представление SQL, и завершается неудачно. Так что, если вы должны сделать следующее, это должно работать:
(from t in ctx.table select t.Date).ToList().Select(d => d.ToString("yyyy-MM-dd"))
или
(from t in ctx.table select t.Date).AsEnumerable().Select(d => d.ToString("yyyy-MM-dd"))
AsEnumerable()
преобразует ранее использованные IQueryable
в IEnumerable
, тем самым останавливая генерацию SQL (в случае Linq to SQL) или любое другое преобразование поставщиком, реализующим конкретный IQueryable
(например, Linq к поставщику SQL).
Обратите внимание, что перед вызовом AsEnumerable()
вы должны были выполнить все действия, которые вы хотите преобразовать в SQL и выполнить в базе данных напрямую.