我有一个包含一些值的列表,比如说 1 2 3 4 5 6
我需要像这样配对它们:12 13 14 15 16 23 24 25 26 34 35 36 45 46 56
基本上,我需要将它们混合起来以创建独特的值集。
您对如何创建这样的新列表有任何想法吗?
谢谢您的意见!
使用 Linq 和元组:
var arr = new[] { 1, 2, 3, 4, 5, 6 };
arr.SelectMany((fst, i) => arr.Skip(i + 1).Select(snd => (fst, snd)));
如果你喜欢 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();
对于样本中的数据,您可以使用一对简单的嵌套循环来完成:
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])));
}
}
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]);
应该帮忙...