在SSIS脚本任务中使用LINQ为变量赋值
本文关键字:LINQ 变量 赋值 SSIS 脚本 任务 | 更新日期: 2023-09-27 18:05:58
我正在尝试遍历一个文件夹。每个文件的后缀可以在SQL表的列中找到。这个后缀是我的LINQ语句的WHERE
,是脚本任务中的一个变量(在注释中显示)。如果谓词为真,我希望它返回SQL表中同一行上另一列的值,并将另一列的值分配给脚本任务中的另一个变量。现在我只做一个MessageBox。显示测试
我已经在我的SSIS包中设置了一个OLEDB连接管理器,我不确定如何在任务中运行LINQ查询,我认为我在如何设置连接方面缺少了一些东西。任何指示都将不胜感激。下面是我的进度:
public void Main()
{
string sourcePath = Dts.Variables["User::sourcePath"].Value.ToString();
string archivePath = Dts.Variables["User::archivePath"].Value.ToString();
string destinationPath = Dts.Variables["User::archivePath"].Value.ToString();
SqlConnection conn = new SqlConnection();
conn = (SqlConnection)(Dts.Connections["Server.Database"].AcquireConnection(Dts.Transaction) as SqlConnection);
DirectoryInfo directoryInfo = new DirectoryInfo(sourcePath);
FileInfo[] files = directoryInfo.GetFiles();
foreach (FileInfo fileInfo in files)
{
string fileName = fileInfo.ToString();
fileName = fileName.Split('_')[0]; // File Suffix
string destinationPrefix = "";
// LINQ HERE USING fileName variable:
//destinationPrefix = FROM t in Table where t.Column == fileName select destinationPrefixColumn
MessageBox.Show(destinationPrefix);
}
}
,
你需要给我们更多Table对象的信息。没有代码将数据从数据库抓取到Table变量中。
var query = "Select * from SomeTable Where SomeCondition Order by Somefields";
var Table = conn.ExecuteQuery(query);
这将得到一个表,您可以在fileinfo循环中扫描它。因为你没有告诉我们要查看扩展的哪些字段,也没有告诉我们你要对源文件夹和目标文件夹做什么。我不能给出更多的代码。另外,看一下fileinfo对象中的一些可能有用的东西…
fileInfo.FileName //Name of file
fileInfo.FullName // full path and name of file
fileInfo.Extension // just the extension
fileInfo.MoveTo() // will move file to new location
fileInfo.CopyTo() // will copy file to new location
回复并澄清你的问题以获得更多帮助。