我有一个列表,我想计算一个包含每个轴承最大范围(到最近的程度)的double [360]。一个困难是我使用的海图绘制软件要求每个程度都没有漏洞。 我知道了MoreLinq批次扩展的,虽然不是很清楚如何使用它...如何将列表拆分为LINQ组并获得组中的最大值
继承人的代码,我到目前为止有: -
List<PolarCoords> plots = ...;
double chartVals = new double[360]; // unused degrees will be zero
double MaxRangesByDegree = from polar in plots let angle = RadToDeg(polar.Bearing)
group plot by angle into degreeBuckets
orderby degreeBuckets
select MaxRange = (from polar2 in degreeBuckets select polar2.SlantRange).Max().ToArray()
// somehow merge chartVals and MaxRangesByDegree so no holes
我可能试图咬掉对于单个查询来说太多了,并且可以通过一个简单的for循环来完成,但这对于学习LINQ来说是一个很好的练习:-)此刻代码抛出一个SystemException:至少有一个对象必须实现IComparable ...
这真是太棒了:-)我现在不必担心MoreLinq扩展 - 我不会考虑使用ToLookup,虽然我知道Range(0,360),但我不确定如何将它与绘制数据。非常感谢:-) – 2010-08-09 10:08:04
不用担心。只是猜测你的要求是什么,甚至不知道该选择什么样的明智默认,因为我不知道'SlantRange'的意思! – Ani 2010-08-09 10:58:30