Как преобразовать поля типа DateTime в просто Date во время выполнения IQueryable записей?

Я нахожусь в ситуации, когда мне нужно преобразовать поля с DateTime в Date (DateTime (2011-01-01 00:00:00) в Date ( 2011-01-01 просто строка без времени)), прежде чем я назначу источник в DataGrid (без использования Binding/Converters), коллекция является IQueryable, но не уверен, как это сделать.

Позвольте мне повторить, что я хочу, чтобы коллекцией манипулировали еще до того, как она была назначена источнику DataGrid.

Кто-нибудь может мне помочь? Спасибо

4 ответа

Если проблема заключается только в преобразовании DateTime в строковое представление, вы можете использовать ToString() и предоставьте строку форматирования:

DateTime date = new DateTime(2011,01,01);
string dateAsString = date.ToString("YYYY-mm-dd");

См. Страницу MSDN для строк стандартного формата даты и времени, чтобы узнать, как управлять форматом.

Вы также можете выполнить преобразование во время связывания, то есть связать с полем DateTime, но указать формат строки, например, (в XAML):

<TextBlock Text="{Binding Path=YourDateTimeField, StringFormat={}{0:d}"/>

Если вы спрашиваете что-то еще, например, о привязке к IQueryable, нам нужно увидеть некоторый код, демонстрирующий то, что вы пытаетесь выполнить.

Я думаю, я смущен вашим вопросом, учитывая, что нет Date введите C#. Если вы просто пытаетесь получить DataGrid отображать DateTime как строка с форматом даты, вам придется преобразовать ее перед привязкой. Либо используйте конвертер, либо связывайтесь с объектом, который имеет предварительно отформатированную строку даты в этом поле.

Почему не могу

var myGridData = myCollection.Select(c => new { TheDate = c.MyDate.ToShortDateString(), Field3 = c.SomethingElse, ... });

Работа?

Просто отформатируйте DateTime предметы соответственно:

var results = timeCollection.Select(x => x.ToString("yyyy-MM-dd"));
Другие вопросы по тегам