Lambda 表达式无法编译

发布于 2024-08-27 17:34:06 字数 583 浏览 5 评论 0原文

我很困惑。

我有这个 lambda 表达式:

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。

I am very confused.

I have this lambda expression:

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

Visual Studio will not compile it and complains about syntax.

I converted the lamba expression to an anonymous delegate as so:

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

and it works fine.

The project uses .NET 3.5 and I have a reference to System.Linq.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安静 2024-09-03 17:34:06

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

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

DateTime.CompareTo is overloaded. Try using explicit parameter types in your lambda:

(DateTime p1, DateTime p2) => ...
留蓝 2024-09-03 17:34:06

下面的代码对我来说编译得很好。也许您应该缩小代码之间存在的显着差异,并通过这个简单的示例来确定问题的根源。

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

The following code compiles fine for me. Perhaps you should narrow down what significant differences exist between your code, and this simple example to pin down the source of the problem.

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;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文