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

标签 c# linq

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

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

在哪里 ( value = end_time-start_time )。

是否有可能在单个 LINQ 中实现这一目标行?

谢谢,感谢。

最佳答案

当然,你可以这样写:

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);

关于c# - 检查列表中的间隔是否等长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983394/

相关文章:

c# - 我应该在我的 LINQ 查询中使用两个 "where"子句还是 "&&"?

c# - Linq-to-Entity 查询的动态谓词

c# - 在 List<T>.AddRange 中使用 Linq 查询有条件地将元素从一个列表添加到另一个列表

c# - 在 C# 中使用 LINQ 进行分组需要帮助

c# - 将此 LINQ 表达式转换为 Lambda

c# - 在 .NET 4.0 中是否有更优雅的方法来执行此操作?

c# - 隐式类型和 TDD

c# - Windows 7 中的rapi.dll 问题 - C#

c# - Trello 海牛添加附件

c# - 删除和排序使用在 Visual Studio 2019 中不起作用