我有2个列表,letter
和indexLetter
,每个列表包含50个变量,从1
开始,而不是0
。
我需要将两个列表作为单独的集合。
我生成一个随机字母并将其添加到letter
列表中:
W
G
I
Y
H
...
然后将其与索引号组合并将其添加到indexLetter
列表:
W1
G2
I3
Y4
H5
...
但是我的代码在开头输出了额外的1
:
1
W1
G2
I3
Y4
H5
...
C#
http://rextester.com/SINT13872
// Letter List
public static List<char> letter = Enumerable.Range(1, 51)
.Select(i => '\0') // null char
.ToList();
// Index Number List
public static List<string> indexLetter = Enumerable.Range(1, 51)
.Select(i => i.ToString()) // number
.ToList();
// Generate Random Letter
public static Random random = new Random();
public static char RandomLetter()
{
const string text = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int index = random.Next(text.Length);
return text[index];
}
public static void Main(string[] args)
{
// Combine Random Letter with Index Number
for (var i = 1; i < 51; i++)
{
// Letter
letter[i] = RandomLetter();
// Letter + Index Number
indexLetter[i] = letter[i] + i.ToString();
}
// Display Letter + Index Letter List
Console.WriteLine(string.Join("\n", indexLetter));
}
删除额外1
但产生空字母的另一个示例。
http://rextester.com/CEQN38224
1
V2
N3
Y4
V5
答案 0 :(得分:2)
您永远不会设置mysql
,因此它会保留在indexLetter[0]
,最终成为结果的初始字符。通过跳过'\0'
的第一项来解决此问题:
indexLetter
请注意,您可以将整个操作折叠为单个LINQ表达式:
Console.WriteLine(string.Join("\n", indexLetter.Skip(1)));
答案 1 :(得分:2)
更改列表的生成方式:
// Letter List
public static List<char> letter = Enumerable.Range(1, 50)
.Select(i => '\0') // null char
.ToList();
// Index Number List
public static List<string> indexLetter = Enumerable.Range(1, 50)
.Select(i => i.ToString()) // number
.ToList();
这将产生两个列表,其中包含来自1-50的50个项目。
接下来,改变你的for循环:
for (var i = 0; i < indexLetter.Count; i++)
{
// Letter
letter[i] = RandomLetter();
// Letter + Index Number
indexLetter[i] = letter[i] + indexLetter[i];
}