检查列表中的间隔是否等长

时间:2016-01-25 00:32:14

标签: c# linq

我有List<foo>有两个属性: start_timeend_time

假设我们在该列表中有100条记录。如何检查所有间隔是否长度相等?换句话说,我想知道所有foo个对象的结束时间和开始时间之间的差值是否相等。

其中(value = end_time-start_time)。

是否可以在单个LINQ行中实现此目的?

谢谢,谢谢。

2 个答案:

答案 0 :(得分:3)

当然,你可以这样写:

var list = new List<foo>();
var areAllEqual = list.GroupBy(l => (l.end_time - l.start_time)).Count() == 1;

或者,如果您想对该信息做更多的事情:

var differences = list.GroupBy(l => (l.end_time - l.start_time)).ToList();
var numDifferences = differences.Count();
var areAllEqual = numDifferences == 1;
var firstDifference = differences.First().Key;
var allDifferences = differences.Select(g => g.Key);

答案 1 :(得分:0)

这样的事情应该有效。

var first = items.First;
var duration = first.end_time - first.start_time;

var allEqual = items.All(i => duration == (i.end_time - i.start_time))