在 C# 中将 List<T> 转换为数组

Kir*_*ran 1 c# office-interop c#-4.0

我有一个来自的列表

public class main
{
     public list<myclass> data  { get; set; }
}

 public class myclass
    {
        public string variety { get; set; }
        public string ordertype { get; set; }
        public string producttype { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

现在我想将 List 转换为返回一个数组以进行 VBA 互操作,如何在一条语句中循环遍历我的类以一次性将所有元素转换为数组。我还有其他一些包含大量元素的类。我已经尝试了下面的代码,但它抛出了越界错误。我需要自动循环遍历 myclass 中的元素并将其分配给数组等。是否有任何替代/单行语句可以将整个列表转换为数组。

string[] NamesArray = new string[list.Count];
string[] NamesArray2 = new string[] { };
for (int i = 0; i < NamesArray.Length; i++)
{
 int idx = 0;
 NamesArray[i] = bres.data[i].ToString();//here I am getting the myclass list not the elements inside the myclass.
foreach (var k in NamesArray[i].)
  {
     NamesArray2[idx++] = k.value.ToString();
  }
 }
Run Code Online (Sandbox Code Playgroud)

Eri*_*zar 6

你为什么不尝试这样做:

myclass[] arr = data.ToArray();
Run Code Online (Sandbox Code Playgroud)

编辑:要返回数组以便从 VBA 中可见,您需要将类设置为 ComVisible。

[ComVisible(true)]
public class main
{
    public list<myclass> data  { get; set; }
}
[ComVisible(true)]
public class myclass
{
    public string variety { get; set; }
    public string ordertype { get; set; }
    public string producttype { get; set; }
}
[ComVisible(true)]
public myclass[] myclasses()
{
     myclass[] arr = data.ToArray();
     return arr;
}
Run Code Online (Sandbox Code Playgroud)

@freeflow 有一个很好的参考链接,您可以使用:https ://analystcave.com/excel-use-c-sharp-in-excel-vba/

  • 代码不够,我按行付费。jk (2认同)