我的问题很简单,但我从中得到的头痛非常严重。在SSIS包中,如何将运行时的System.Object包变量转换为带有C#脚本的字符串列表,以便我可以从此列表中选择Max值并将其分配回另一个包变量。
(详细:) 在SSIS中,我有一个前面的Cozy Roc任务,它从远程SFTP目录中获取文件名列表并将其保存到本地(包)变量" FilesNamesList" System.Object类型。我想用C#脚本任务做的是将这个对象变量解析成一个列表,然后我可以选择Max Value / File Name并将其分配给另一个包变量" LastFileName"类型字符串。然后我将使用第二个变量仅通过SFTP下载具有此名称的文件。这是非工作代码。
String myString;
List<String> myList;
var myVariable = Dts.Variables["User::FileNamesList"];
myList = myVariable as List<String>; //Main Challenge
myString = myList.Max();
Dts.Variables.["User::LastFileName"] = myString;
我正在尝试的第二个选项是提取到一个表对象,但我仍然在尝试填充表时出错:
OleDbDataAdapter A = new OleDbDataAdapter();
DataTable dt = new DataTable();
A.Fill(dt, Dts.Variables["User::pkg_FileList"].Value); //Error
List<string> myValues = new List<string>();
答案 0 :(得分:0)
在SSIS中,您必须将变量捕获到对象变量中,然后转换为列表,如下所示:
Object ObjFileNamesList= Dts.Variables["User::FileNamesList"].Value;
List<string> lstFileNamesList = (List<string>)ObjFileNamesList;
// then do your list logic here