约翰·斯基特(John Skeets)对这个问题的回答,使用LINQ选择单个列表的所有唯一组合,不重复,效果非常好。
然而,有人可以分解第一个答案的每个组件的内部工作方式吗:
List<int> slotIds = new List<int> {1, 2, 3};
var query = slotIds.SelectMany((value, index) => slotIds.Skip(index + 1),
(first, second) => new { first, second });