Лямбда-выражение не будет компилироваться - PullRequest
2 голосов
/ 05 апреля 2010

Я очень смущен.

У меня есть это лямбда-выражение:

tvPatientPrecriptionsEntities.Sort((p1, p2) =>
    p1.MedicationStartDate
      .Value
      .CompareTo(p2.MedicationStartDate.Value));

Visual Studio не скомпилирует его и жалуется на синтаксис.

Я преобразовал лямбувыражение для анонимного делегата, например:

tvPatientPrecriptionsEntities.Sort(
  delegate(PatientPrecriptionsEntity p1, PatientPrecriptionsEntity p2) 
  {
      return p1.MedicationStartDate
               .Value
               .CompareTo(p2.MedicationStartDate.Value);
  });

, и оно отлично работает.

В проекте используется .NET 3.5, и у меня есть ссылка на System.Linq.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2010

DateTime.CompareTo перегружен. Попробуйте использовать явные типы параметров в вашей лямбде:

(DateTime p1, DateTime p2) => ...
1 голос
/ 06 апреля 2010

Следующий код компилируется нормально для меня. Возможно, вам следует сузить существенные различия между вашим кодом и этим простым примером, чтобы определить источник проблемы.

static void Main(string[] args)
{
   PatientPrescriptionsEntity[] ppe = new PatientPrescriptionsEntity[] {};
   Array.Sort<PatientPrescriptionsEntity>(ppe, (p1, p2) => 
       p1.MedicationStartDate.Value.CompareTo(p2.MedicationStartDate.Value));
}
...
class PatientPrescriptionsEntity
{
   public DateTime? MedicationStartDate;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...