我很困惑。
我有这个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
。
答案 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;
}