我有List<foo>
有两个属性:
start_time
和end_time
假设我们在该列表中有100条记录。如何检查所有间隔是否长度相等?换句话说,我想知道所有foo
个对象的结束时间和开始时间之间的差值是否相等。
其中(value = end_time-start_time
)。
是否可以在单个LINQ
行中实现此目的?
谢谢,谢谢。
答案 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))