当我不使用ToList()方法查询firsQue时,一切都是“好!” 但我需要立即执行firsQue!然后,我将其添加到末尾的ToList()方法中,并在第二个查询secQue中获得异常“至少一个对象必须实现IComparable”。
我不明白是什么原因造成的,分组由g.Action.ActionType.Name执行...是字符串,字符串类型实现了IComparer接口
static void Main(string[] args)
{
var firsQue = GetAll()
.SelectMany(s => s.Goals
.Where(s2 => s2.ID == 2)
.SelectMany(f => f.Actions
.SelectMany(h => h.GoalProgresses))).ToList();
var secQue = (from g in firsQue
group g by g.Action.ActionType.Name into a
select new
{
Name = a.Key,
Duration = a.Sum(s => s.Action.Duration),
Done = a.Sum(s => s.DurationComplete),
RemainsToDo = (a.Sum(s => s.Action.Duration) - a.Sum(s => s.DurationComplete))
})
.OrderBy(s => s)
.ToList();
System.Console.ReadLine();
}
static IQueryable<Patient> GetAll()
{
return db.Patients;
}
}
问题在这里:
.OrderBy(s => s)
编译器不知道如何比较值和执行排序。您的类型必须实现IComparable
(尽管它是匿名类型),否则您可以通过某些属性进行排序:
.OrderBy(s => s.ID)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句