Как преобразовать дату и время в строку в linqtosql? - PullRequest
6 голосов
/ 16 июня 2010

Я использую linqtosql и внутри запроса linq, я пытался преобразовать столбец типа datetime в строку типа 'dd-MM-yy'.Тем не менее, я получил сообщение об ошибке:

NotSupportedException: Метод 'System.String ToString (System.String)' не имеет поддерживаемого перевода в SQL.

мой следующийзапрос linq:

from ffv in Flo_flowsheet_values
where ffv.Flowsheet_key == 2489
&& ffv.Variable_key == 70010558
&& ffv.Status == 'A'
&& ffv.Column_time >= DateTime.ParseExact("2010-06-13 00:00", "yyyy-MM-dd HH:mm", null)
&& ffv.Column_time <= DateTime.ParseExact("2010-06-13 22:59", "yyyy-MM-dd HH:mm", null)
select new  { 
ColumnTime = ffv.Column_time
,ColumnTimeForXCategory = ffv.Column_time.Value.ToString("dd-MM-yy") ***====> this statement invoke error***
,BTValue = Convert.ToDouble( ffv.Value) }

Ответы [ 6 ]

13 голосов
/ 14 декабря 2013

Вы можете использовать string.Format, чем ToString() метод, чтобы решить вашу проблему. Как

ColumnTimeForXCategory = string.Format("{0:dd-MM-yy}",ffv.Column_time.Value) 
2 голосов
/ 21 октября 2011

Я наткнулся на этот пост, почему я искал тот же ответ. Вот что я в конечном итоге обнаружил, что могу сделать, посмотрев на свойства объекта объекта date.

CreatedDateTime = 
   modelChartArea.CreatedDateTime.Month + "/" + 
   modelChartArea.CreatedDateTime.Day + "/" + 
   modelChartArea.CreatedDateTime.Year
1 голос
/ 23 ноября 2012

Это может быть поздно, но все же .... попробуйте использовать .AsEnumerable () ... Я тоже как-то наткнулся на эту проблему, тогда я нашел это: http://forum.linqpad.net/discussion/58/comparing-dates-in-linqpad

0 голосов
/ 16 июня 2010

Не заставляйте базу данных выполнять форматирование строки для пользовательского интерфейса. Разобрать его на стороне клиента.

0 голосов
/ 16 июня 2010

Как уже упоминалось выше, вы можете linq хочет перевести то, что вы делаете, в sql.Это невозможно в этом случае.Но вы можете преобразовать его в строку перед вашим запросом, а затем передать строку в выражение linq.

0 голосов
/ 16 июня 2010

Вы анализируете строки DateTime в самом выражении, и поставщик LINQ to SQL не может преобразовать этот код C # в эквивалентный код T-SQL.

Вместо этого попробуйте что-то подобное:

DateTime start 
    = DateTime.ParseExact(
        "2010-06-13 00:00", 
        "yyyy-MM-dd HH:mm", 
        CultureInfo.InvariantCulture);
DateTime end 
    = DateTime.ParseExact(
        "2010-06-13 22:59", 
        "yyyy-MM-dd HH:mm", 
        CultureInfo.InvariantCulture);

from ffv in Flo_flowsheet_values
where ffv.Flowsheet_key == 2489
    && ffv.Variable_key == 70010558
    && ffv.Status == 'A'
    && ffv.Column_time >= start
    && ffv.Column_time <= end
select new 
{ 
    ColumnTime = ffv.Column_time,
    ColumnTimeForXCategory = ffv.Column_time.Value.ToString("dd-MM-yy")
    BTValue = Convert.ToDouble( ffv.Value)
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...