我正在尝试将包含人名的旧结构类型数组存储到一个已经缩小的新字符串数组中,以便我可以在另一种方法中将其循环播放。
string[] newStringArray = new string[10]
for (int i = 0; i < oldStringArray.Length; i++)
{
newStringArray = oldStringArray[i].firstName;//Cannot convert type 'string to 'string[]'
}
foreach (string value in newStringArray)
{
Console.WriteLine(value);
}
答案 0 :(得分:5)
看起来您忘记了索引访问者:
string[] newStringArray = new string[10];
for (int i = 0; i < oldStringArray.Length && i < newStringArray.Length; i++)
{
newStringArray[i] = oldStringArray[i].firstName;
// ^
}
答案 1 :(得分:3)
您可以使用Enumerable.Select
投影FirstName
属性,然后使用Enumerable.ToArray
将其实现为新数组:
string[] firstNames = oldStringArray.Select(x => x.FirstName).ToArray();
答案 2 :(得分:2)
您必须声明新数组的大小与旧数组相同。
string[] newStringArray = new string[oldStringArray.Length];
然后使用索引器设置新数组的元素。
for (int i = 0; i < oldStringArray.Length; i++)
{
newStringArray[i] = oldStringArray[i].firstName;
}
答案 3 :(得分:0)
如果您只想要前十个名字,请使用
var firstTenFirstNames = oldStringArray.Select(x => x.FirstName).Take(10).ToArray()