2

我有一个包含一些值的列表,比如说 1 2 3 4 5 6

我需要像这样配对它们:12 13 14 15 16 23 24 25 26 34 35 36 45 46 56

基本上,我需要将它们混合起来以创建独特的值集。

您对如何创建这样的新列表有任何想法吗?

谢谢您的意见!

4

4 回答 4

9

使用 Linq 和元组:

var arr = new[] { 1, 2, 3, 4, 5, 6 };

arr.SelectMany((fst, i) => arr.Skip(i + 1).Select(snd => (fst, snd)));
于 2017-10-29T17:26:03.833 回答
7

如果你喜欢 Linq:

var ar = new int[] {1, 2, 3, 4, 5};

var combo = (from left in ar
            from right in ar where right > left 
            select new { left, right }).ToArray();
于 2012-10-01T00:37:38.287 回答
2

对于样本中的数据,您可以使用一对简单的嵌套循环来完成:

var list = new List<int>{1,2,3,4,5,6};
var res = new List<int>();
for (int i = 0 ; i != list.Count ; i++) {
    for (int j = i+1 ; j != list.Count ; j++) {
        res.Add(list[i]*10+list[j]);
    }
}

对于更复杂的数据,您可以使用字符串连接技巧:

var list = new List<int>{98,76,54,32,10};
var res = new List<int>();
for (int i = 0 ; i != list.Count ; i++) {
    for (int j = i+1 ; j != list.Count ; j++) {
        res.Add(int.Parse(string.Format("{0}{1}", list[i], list[j])));
    }
}
于 2012-10-01T00:35:13.880 回答
1
var newList = new List<int>();
foreach(var i in originalList)
    for(int j = i + 1; j < originalList.Count; ++j)
        newList.Add(originalList[i] * 10 + originalList[j]);

应该帮忙...

于 2012-10-01T00:34:09.097 回答