在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);            
    }
}

在SSIS脚本任务中使用LINQ为变量赋值

你需要给我们更多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

回复并澄清你的问题以获得更多帮助。