Select all unique combinations of a single list, with no repeats, using LINQ
我有一个数字列表,我需要使用LINQ查询创建列表中数字的每个可能的唯一组合,而不需要重复。例如,如果我有
我目前使用两个
1 2 3 4 5 6 7 8 9 10 | for (int i = 0; i < slotIds.Count; i++) { for (int j = i + 1; j < slotIds.Count; j++) { ExpressionInfo info1 = _expressions[i]; ExpressionInfo info2 = _expressions[j]; // etc... } } |
是否可以将这两个
谢谢。
当然-您可以通过一个对
1 2 | var query = slotIds.SelectMany((value, index) => slotIds.Skip(index + 1), (first, second) => new { first, second }); |
这里有一个备选方案,它不使用如此深奥的
1 2 3 |
它们的作用基本相同,只是方式略有不同。
这是另一个更接近你原来的选择:
1 2 3 4 | var query = from index in Enumerable.Range(0, slotIds.Count) let first = slotIds[index] // Or use ElementAt from second in slotIds.Skip(index + 1) select new { first, second }; |