мы опускаем пальцы ног с помощью EF4 и врезаемся в стену.
У нас есть приложение, которое управляет данными участников, и основным требованием является создание писем с использованием Word mail merge.
В текущей реализации мы генерируем набор данных для требуемых записей и перечисляем его столбцы и строки, чтобы создать текстовый файл с разделителями табуляции, который Word может использовать для слияния. (Это работает очень хорошо, вкладка используется, так как в файле есть многострочные результаты, такие как FormattedAddressBlock).
В EF4 нет возможности преобразовать внутренне в набор данных (эта функция была удалена после бета-версии Orcas), поэтому вопрос:
Как мы перечисляем столбцы и строки LINQ или ObjectQuery, чтобы позволить нам создать текстовый файл.
Вот пример кода, который мы используем с таблицей данных.
Using wmTextWriter As TextWriter = New StreamWriter(WordMergeDataFile)
' Write the header row to the merge data file.
Dim wmOutput As New StringBuilder()
For i As Integer = 0 To MergeData.Columns.Count - 1
wmOutput.Append(MergeData.Columns(i).ColumnName & vbTab)
Next
wmOutput.Remove(wmOutput.Length - 1, 1) ' Remove the trailing Tab character.
wmTextWriter.WriteLine(wmOutput.ToString)
' Loop through the datatable and write out the data rows to the work merge file.
wmOutput = New StringBuilder()
With MergeData
For iRowNo As Integer = 0 To .Rows.Count - 1
For iColNo As Integer = 0 To .Columns.Count - 1
wmOutput.Append(DOUBLEQUOTE & .Rows(iRowNo).Item(iColNo).ToString & DOUBLEQUOTE & vbTab)
Next
wmOutput.Remove(wmOutput.Length - 1, 1) ' Remove the trailing Tab character.
wmTextWriter.WriteLine(wmOutput.ToString)
wmOutput = New StringBuilder()
Next
End With
wmOutput = Nothing
wmTextWriter.Close()
End Using
Любая помощь будет высоко ценится.
Марк Харби
Ноттингем. UK