Lambda表达式不会编译

时间:2010-04-05 16:47:14

标签: c# lambda

我很困惑。

我有这个lambda表达式:

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

Visual Studio不会编译它并抱怨语法。

我将lamba表达式转换为匿名委托,如下所示:

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

它工作正常。

该项目使用.NET 3.5,我引用了System.Linq

2 个答案:

答案 0 :(得分:2)

DateTime.CompareTo已超载。尝试在lambda中使用显式参数类型:

(DateTime p1, DateTime p2) => ...

答案 1 :(得分:1)

以下代码对我来说很好。也许你应该缩小你的代码之间存在的重大差异,以及这个简单的例子来确定问题的根源。

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;
}