Я новичок в запросах 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"))

Самая большая проблема, и я не могу понять, как использовать переменную «запрос» в «Тусклом запросе». Пока в сети есть примеры и можно использовать его как datarow, copytodatatable и прочее. Я могу видеть только строки, равные и тому подобное.

Моя цель - прочитать файлы в папке, присоединить ее к «Таблице назначения» и найти недостающие.

Коды, написанные ниже, находятся сразу после оператора select.

Скриншоты ошибок введите описание изображения здесь введите описание изображения здесь

1
Dasso 27 Ноя 2017 в 16:06

1 ответ

Лучший ответ

Я думаю, тебе стоит использовать

For each line in query.ToList()

    Dim drRow as DataRow
    drRow = MT.NewRow
    drRow("Filename") = line.Item(0)
    MT.Rows.Add(drRow)

Next

Вместо того

For each line in query
    MT.Rows.Add(query)
Next
1
Hadi 27 Ноя 2017 в 19:58