2014-04-23 12 views
3

Я хочу, чтобы мой запрос остановил отображение времени и только дату. Это то, что я пытался далеко:Краткая дата в Linq

Query= (from z in ctx.Interactions 
     where z.ActivityDate <= StartDateTo 
      && z.ActivityDate >= EndDateTo 
      && z.Indepth == false 
     select new 
       { 
        Date = new DateTime(z.ActivityDate.Year, z.ActivityDate.Month, z.ActivityDate.Day), 
        Subject = z.Subject 
       }).ToList(); 

И

Query= (from z in ctx.Interactions 
     where z.ActivityDate <= StartDateTo 
      && z.ActivityDate >= EndDateTo 
      && z.Indepth == false 
     select new 
       { 
        Date = z.ActivityDate.Date, 
        Subject = z.Subject 
       }).ToList(); 

И оба не работают.

LINQ to Entities does not recognize the method 'System.String ToString(System.String)' method, and this method cannot be translated into a store expression. при попытке применить строковый метод.

+0

запросе LINQ ничего не _display_. Где вы хотите показать только дату? –

+0

Ну, вам нужно сделать это, когда вы конвертируете дату/время в строку для отображения. –

+0

Linq не отображает ничего, но когда я его показываю, он отображает дату. Это привязка к запросу – Master

ответ

1

Вам необходимо будет выполнить форматирование во время привязки. Как вы не показывают фактический код связывания, это трудно специально адрес вашей ситуации, но давайте посмотрим на то, что происходит в вашем запросе:

Query= (from z in ctx.Interactions 
     where z.ActivityDate <= StartDateTo && z.ActivityDate >= EndDateTo && z.Indepth == false 
     select new { Date = z.ActivityDate.Date, Subject = z.Subject }).ToList(); 

После LINQ обрабатывает этот запрос, в результате Query переменной должен быть типа List<DateTime>. Образом вы запрос работает, то вы бы вернуть список DateTime с в формате, как это:

2014-04-23 00:00:00 
2014-03-28 00:00:00 
etc... 

Для того, чтобы связать это без значение времени, вам нужно позвонить ToString() по каждому элементу (или нужный элемент) списка на момент привязки.

Предполагая, что вы используете ListBox или что-то подобное можно было бы написать следующее:

foreach (var date in myList) //this is the resultant list from the query 
{ 
    listBox1.Items.Add(date.ToString("MM/dd/yyyy"); 
} 

Если вы в буквальном смысле привязки к DataSource собственности, вам нужно будет конвертировать ваши List<DateTime> к List<string> с отформатированных значений ,

3

Вы можете использовать anyDate.ToString("ddMMyyyy");//any preferred format.

Не уверен, что это то, что вы ищете!

1

Ваши запросы возвращают объекты с датой & Свойства объекта.

В свойстве Date вы передаете объект DateTime. Чтобы отобразить короткую дату, у вас есть функция «ToShortDateString()» в дате.

Если вы не хотите работать с датой и предпочитаете выбирать строку, выполните преобразование внутри запроса linq.

Используйте это, если вы хотите вернуть строки:

var q = (from z in ctx.Interactions 
     where z.ActivityDate <= StartDateTo && z.ActivityDate >= EndDateTo && z.Indepth == false 
     select new { Date = z.ActivityDate.Date.ToShortDateString(), Subject = z.Subject }).ToList(); 
0

ToShortDateString() может помочь вам.

Query= (from z in ctx.Interactions 
     where z.ActivityDate <= StartDateTo 
      && z.ActivityDate >= EndDateTo 
      && z.Indepth == false 
     select new 
       { 
        Date = z.ActivityDate.ToShortDateString(), 
        Subject = z.Subject 
       }).ToList(); 
+0

Наличие 'z.ActivityDate.Date.ToShortDateString()' все равно приведет к ошибке из-за 'Date'. 'z.ActivityDate.ToShortDateString()' должен работать вместо этого. – krillgar

+0

@krillgar thanx. – Jaihind

0

дата преобразования в строку, как показано ниже

string stringDate=string.empty; 
stringDate=Convert.ToDateTime("2014-04-23 00:00:00").ToShortDateString(); 

это даст выход как 2014-04-23

+0

Я думаю, вы не прочитали вопрос. Он находится в запросе LINQ. – MarceloBarbosa

Смежные вопросы