我有一个 .NET 项目,我在其中使用 IronPython 对数据进行一些处理。目前,C#代码循环遍历并为需要动态计算的每一行和每一列生成一个IronPython脚本。但是,我想通过传入 DataTable 对象和对其执行的脚本来提高该过程的效率。不幸的是,我遇到了'DataTable' object is unsubscriptable
错误,并且没有进行任何处理。
用于生成和执行 IronPython 脚本的 C# 片段:
DataTable dt = new DataTable();
dt.Columns.Add("count", typeof(int));
dt.Columns.Add("calc", typeof(int));
dt.Rows.Add(1, null);
ScriptEngine engine = Python.CreateEngine(options);
ScriptScope scope = engine.CreateScope();
scope.SetVariable("dt", dt);
ScriptSource source = engine.CreateScriptSourceFromString(code, SourceCodeKind.AutoDetect);
object result = source.Execute(scope);
DataTable table = scope.GetVariable<System.Data.DataTable>("dt");
要对表执行的 Python 脚本:
import clr
clr.AddReference('System.Data')
from System import Data
from System.Data import DataTable
for row in dt.Rows:
dt["calc"] = dt["count"] + 1
如何修复'DataTable' object is unsubscriptable
错误,或者有更好的方法来处理将 DataTable 传递到 IronPython?