3

我有数据系列,其中每个成员都包含一些元素,并且每个元素都有浮点变量 D 表示 OADate(excel 格式)中的日期。我需要找出是否有任何系列与“邻居”相交。所以结果是一个布尔值。有没有办法在 LINQ 中做到这一点?这是我当前的工作代码

         bool overlaps = false;
        for (int i = 0; i < series.Count-1; i++) {
            if (series[i].elements.Last().D > series[i + 1].elements.First().D) {
                overlaps = true;
                break;
            }           
        }

谢谢 :-)

4

2 回答 2

4
series.Skip(1)
      .Where((s,i) => series[i].elements.Last().D > s.elements.First().D).Any();

说明:因此我们跳过了第一个元素,然后series[i]实际上将与series[i]您的示例中的相同,并且s将是 index 处的项目series[i+1]

于 2012-12-30T11:22:23.037 回答
1
series.Zip(series.Skip(1).Concat(series.Take(1)), (a, b) => 
        new { a = a, b = b })
       .Any(c=>c.a.elements.Last().D > c.b.elements.First().D);

以自身四舍五入的方式进行压缩series,然后将主项series与旋转项中的对应项进行比较!

于 2012-12-30T11:25:15.637 回答