Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: LINQ запрос на max и min Добавлено: 15.04.12 18:27  

Автор вопроса:  Zahar | Web-сайт: partnerka-ru.info
Имеется таблица Table, в которой отражены даты начала и окончания работы по договорам подряда работников в фирме. По некоторым причинам некоторые даты начала и окончания работы пока имеют значение Null.

FIO          Begin_Date         End_Date
Петров       Null               16.01.2010
Иванов       14.01.2010         22.01.2010
Захаров      21.01.2010         Null
Иванов       29.05.2010         10.03.2011
Фёдоров      10.10.2010         13.03.2011
Иванов       13.02.2011         Null
Петров       24.11.2011         12.03.2012

Необходимо посредством LINQ-запроса в VB.NET получить список всех работавших лиц с указанием для каждого из них даты начала самого первого контракта и окончания самого последнего контракта. То есть надо получить следующее:

FIO          Begin_Date         End_Date
Петров       24.11.2011         12.03.2012
Иванов       14.01.2010         10.03.2011
Захаров      21.01.2010         Null
Фёдоров      10.10.2010         13.03.2011

Такой запрос к датасету:

Dim query = From dt In Table _
         Group By zz = dt.Field(Of String)("FIO") Into gr = Group _
         Select New With { _
              .FIO = zz, _
              .Begin_Date = gr.Min(Function(min) min.Field(Of DateTime)("Begin_Date")), _
              .End_Date = gr.Max(Function(max) max.Field(Of DateTime)("End_Date")) _
              }
Выдаёт ошибку на null (Eсли попробовать на таблице без значений null, то делает выборку нормально).

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3177
 Профиль | | #1 Добавлено: 16.04.12 09:50
gr.Min и gr.Max попробуй кастануть к Nullable<;DateTime>

Ответить

Номер ответа: 2
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3177
 Профиль | | #2 Добавлено: 16.04.12 09:50
к
  1. Nullable(Of DateTime)

Ответить

Номер ответа: 3
Автор ответа:
 Zahar



Вопросов: 91
Ответов: 67
 Web-сайт: partnerka-ru.info
 Профиль | | #3
Добавлено: 17.04.12 00:48
не
AgentFire пишет:
gr.Min и gr.Max попробуй кастануть к Nullable<ateTime>

 

Не могу понять, как это реализовать?

Ответить

Номер ответа: 4
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3177
 Профиль | | #4 Добавлено: 17.04.12 09:06
Gугли по CType и DirectCast.

Ответить

Номер ответа: 5
Автор ответа:
 BG(Алексей)



Вопросов: 26
Ответов: 295
 Профиль | | #5 Добавлено: 22.04.12 23:00
Попробуй так.
  1.         Dim query = From dt In Table _
  2.         Group By zz = dt.Field(Of String)("FIO") Into gr = Group _
  3.         Where gr.Min IsNot Nothing AndAlso gr.Max IsNot Nothing _
  4.         Select New With {.FIO = zz, _
  5.                          .Begin_Date = gr.Min(Function(min) min.Field(Of DateTime)("Begin_Date")), _
  6.                          .End_Date = gr.Max(Function(max) max.Field(Of DateTime)("End_Date")) _
  7.                          }

Ответить

Страница: 1 |

Поиск по форуму





© Copyright 2002-2011 VBNet.RU | Пишите нам