LINQ从多行的条件中选择一个bool

时间:2012-12-30 11:14:01

标签: c# .net linq

我有数据系列,其中每个成员都包含一些元素,每个元素都有浮点变量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;
            }           
        }

谢谢: - )

2 个答案:

答案 0 :(得分:4)

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

说明:因此我们跳过第一个元素,然后series[i]实际上与样本中的series[i]相同,s将是索引series[i+1]的项目。

答案 1 :(得分: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的项目与已轮换的项目进行比较!