Python.NET-将Python列表转换为.NET列表C#

问题描述

我正在使用Python.NET在C#中导入一个python列表(字符串),但找不到从Python.NET动态对象转换为C#列表的任何示例(那里的所有示例似乎都是相反的方向) C#到Python)。

我尝试使用(List<string>)Enumerable.ToList<string>()来投射动态python.net对象,但是都失败了。 as运算符返回null。唯一有效的方法是使用foreach对其进行循环...但这真的是唯一的方法和最佳的解决方案吗?

代码如下:

using (Py.GIL())
{
   dynamic MyPythonClass = Py.Import("MyPythonClass")
   dynamic pyList = MyPythonClass.MyList;
   
   //List<string> mylist = (List<string>)pyList;               //Failed
   //List<string> mylist = Enumerable.ToList<string>(pyList);  //Failed
   //List<string> mylist = pyList as List<string>;             //returns null

   List<string> mylist = new List<string>();
   foreach(string item in pyList)
   {
         mylist.Add(item);                                     //Success !
   }
}

解决方法

由于@Dave,答案非常(可耻)非常简单:

string[] mylist = (string[])pyList;

//or

List<string> mylist = ((string[])pyList).ToList<string>();