var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
orderby l.Distance
select l);
return (List<CandidateResult>)candidates;
最佳答案
好吧,您的“候选人”变量不是List<T>
,而是某些IEnumerable<T>
的T
。
但是,即使在C#4中,List<T>
也不是T
的变体(因为它是一个类,并且类是不变的;并且还因为它在输入和输出位置都使用了T
)。
最简单的解决方案是获取正确的序列类型开头,然后调用ToList
:
var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
orderby l.Distance
select (CandidateResult) l);
return candidates.ToList();
如下所示,可以改为调用
Cast
,但在这种情况下,我认为它不会变得更好。var candidates = (from l in db.GetLeads(lat, lon, role, radius + 10)
orderby l.Distance
select l);
return candidates.Cast<CandidateResult>()
.ToList();
请注意,当您实际上只在做一件事情(在这种情况下是排序)时,不使用查询表达式通常会更简单,例如
return db.GetLeads(lat, lon, role, radius + 10)
.OrderBy(l => l.Distance)
.Cast<CandidateResult>()
.ToList();