如何在List<string>
到A00B00
之间的每个组合中自动生成A100B100
?
我认为这将是10,100件。
所以List将包含:
A00B00
A00B01
A00B02
...
A01B00
A01B01
A01B02
...
A100B98
A100B99
A100B100
需要保持AxxBxx
格式。我不希望它像0A01B0
那样被扰乱。
答案 0 :(得分:1)
由于您有一系列0-100
而且您只有A
和B
作为前缀,我们会在ints
中填充两个列表0 to 100
的列表然后使用System.Linq
查找所有组合,然后附加到带有分隔符的list
。现在只需更换分隔符。
有很多方法可以解决这个问题,我建议使用System.Linq
public static IEnumerable<string> FindAllCombinationsAnotherWay()
{
List<int> ListOne = Enumerable.Range(1, 100).ToList();
List<int> ListTwo = Enumerable.Range(1, 100).ToList();
var result = ListOne.SelectMany((a, indexA) =>
ListTwo.Where((b, indexB) =>
ListTwo.Contains(a) ? !b.Equals(a) && indexB > indexA
: !b.Equals(a))
.Select(b => string.Format("A{0:00}B{1:00}", a, b)));
return result.Distinct();
}
答案 1 :(得分:1)
您可以轻松实现这一目标:
var result = new List<string>();
foreach (var i in Enumerable.Range(0, 101))
{
foreach (var j in Enumerable.Range(0, 101))
{
result.Add($"A{i:00}B{j:00}");
}
}
答案 2 :(得分:1)
此类组合称为Cartesian products,这是另一种LINQ解决方案:
var lst = Enumerable.Range(0, 101)
.SelectMany(a => Enumerable.Range(0, 101).Select(b => $"A{a:00}B{b:00}"))
.ToList();