使用外部资源输入 BIML
using external source to feed into BIML
有没有办法引用 csv 或其他具有 table 名称和源查询的数据源来生成 BIML 文档?
谢谢
请注意,C# 不是我的强项,以下可能不是执行此操作的理想方法。如果你找到更合适的东西,我非常想听听:)
我发现将基于 CSV 的元数据包含到我的 Biml 项目中的最简单方法是将它们加载到 C# DataTable
对象中,然后我在我的 Biml 中将其引用为
一个 C# 变量对象,它与 foreach
一起很好地循环遍历行。
假设您知道如何将 C# 包含在您的 Biml 项目中(直接在文件中或通过引用的 .cs
文件),您可以使用以下代码:
public static DataTable FlatFileToDataTable(string filePath, char delimiter)
{
DataTable dt = new DataTable();
using (StreamReader sr = new StreamReader(filePath))
{
string[] headers = sr.ReadLine().Split(delimiter);
foreach (string header in headers)
{
dt.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(delimiter);
DataRow dr = dt.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
dt.Rows.Add(dr);
}
}
return dt;
}
我认为为了使用 StreamReader
,您还需要将 using System.IO;
添加到您的代码文件中。
用法是定义一个 DataTable
对象并用上面的结果填充它,然后在你的 Biml 中使用代码片段引用它:
DataTable YourDataTable = FlatFileToDataTable("<Path to CSV file>",'<Value Delimiter>');
...
<Columns>
<# foreach(DataRow r in YourDataTable.Rows){ #>
<Column Name="<#=r["YourColumnName"]#>" etc />
<# } #>
</Columns>
有没有办法引用 csv 或其他具有 table 名称和源查询的数据源来生成 BIML 文档?
谢谢
请注意,C# 不是我的强项,以下可能不是执行此操作的理想方法。如果你找到更合适的东西,我非常想听听:)
我发现将基于 CSV 的元数据包含到我的 Biml 项目中的最简单方法是将它们加载到 C# DataTable
对象中,然后我在我的 Biml 中将其引用为
一个 C# 变量对象,它与 foreach
一起很好地循环遍历行。
假设您知道如何将 C# 包含在您的 Biml 项目中(直接在文件中或通过引用的 .cs
文件),您可以使用以下代码:
public static DataTable FlatFileToDataTable(string filePath, char delimiter)
{
DataTable dt = new DataTable();
using (StreamReader sr = new StreamReader(filePath))
{
string[] headers = sr.ReadLine().Split(delimiter);
foreach (string header in headers)
{
dt.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(delimiter);
DataRow dr = dt.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
dt.Rows.Add(dr);
}
}
return dt;
}
我认为为了使用 StreamReader
,您还需要将 using System.IO;
添加到您的代码文件中。
用法是定义一个 DataTable
对象并用上面的结果填充它,然后在你的 Biml 中使用代码片段引用它:
DataTable YourDataTable = FlatFileToDataTable("<Path to CSV file>",'<Value Delimiter>');
...
<Columns>
<# foreach(DataRow r in YourDataTable.Rows){ #>
<Column Name="<#=r["YourColumnName"]#>" etc />
<# } #>
</Columns>