【发布时间】:2017-11-27 13:06:05
【问题描述】:
我是 LINQ 查询和编写 SSIS 脚本任务以从两个数据表中读取数据的新手。 我创建了以下查询,我希望将输出作为表格通过电子邮件发送。电子邮件的正文将作为输出。
我可以看到结果。但不知道如何使用这些数据(新到 linq)。 这是我的代码:-
Dim Filename As String
Dim Filepath As String
Dim i As Integer
Filename = "TM_xxx_DAILY_*" + Dts.Variables("User::VLoaddt").Value.ToString + "_*.txt"
Filepath = Dts.Variables("User::vSrcFolder").Value.ToString
Dim di As DirectoryInfo = New DirectoryInfo(Filepath)
Dim fi As FileInfo() = di.GetFiles(Filename)
Dim DestTab As DataTable
DestTab = New DataTable("DestinationTable")
Dim column As DataColumn = New DataColumn("Dest")
column.DataType = System.Type.GetType("System.String")
DestTab.Columns.Add(column)
DestTab.Rows.Add("TM_xxx_ONLINE")
DestTab.Rows.Add("TM_xxx_RETAIL")
DestTab.Rows.Add("TM_xxx_TELESALES")
DestTab.Rows.Add("TM_xxx_DAILY_DEVICE")
Dim SrcTab As DataTable
SrcTab = New DataTable("SourceTable")
Dim column1 As DataColumn = New DataColumn("Source")
column1.DataType = System.Type.GetType("System.String")
Dim column2 As DataColumn = New DataColumn("FileExists")
column2.DataType = System.Type.GetType("System.String")
SrcTab.Columns.Add(column1)
SrcTab.Columns.Add(column2)
For i = 0 To fi.Length - 1
SrcTab.Rows.Add(Left(fi.GetValue(i).ToString, Len(fi.GetValue(i).ToString) - 20), "Exists")
Next
Dim query =
From a In DestTab
Group Join b In SrcTab
On a.Field(Of String)("dest") Equals b.Field(Of String)("Source")
Into Group
Let b = Group.FirstOrDefault
Select dest = a.Field(Of String)("dest"), FileExists = If(b Is Nothing, "Missing", b.Field(Of String)("FileExists"))
最大的挑战,我无法理解如何在“Dim 查询”中使用变量“查询”。而网络中的示例并能够将其用作数据行、复制到数据表等。我只能看到 tostring、equals 和类似的东西。
我的目标是读取文件夹中的文件并将其与“Destinationtable”连接并找到丢失的文件。
下面写的代码是select语句后面的代码
【问题讨论】:
-
LINQ 查询返回
IEnumerable(Of T),其中T类型取决于查询的具体情况。一般来说,您使用For Each循环访问IEnumerable的内容。 -
@jmcilhinney 谢谢。当我尝试使用类似'for each line in query console.writeline (line) next'之类的代码时,我收到错误提示从对象隐式转换为不可计数,这是正确的。所以我在这里错过了什么吗?
-
编辑您的问题并向我们展示产生错误的实际代码。另外,我建议您复制并粘贴错误消息。
-
添加了错误屏幕抓取
标签: sql-server vb.net linq ssis script-task