使用外部源提供给BIML
答
不要知道C#是不是我的强项和下方可能无法做到这一点的理想方式。如果你找到更合适的,我非常想听听吧:)
我已经找到了包括基于CSV元数据到我BIML项目最简单的方法是将其加载到C#DataTable
然后我在Biml中引用的对象是一个C#变量对象,它与foreach
一起很好地遍历行。
假设你知道如何在您的BIML项目C#(直接或通过引用.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>
是。显示一些示例数据以及如何使用它来制作包和任务 – billinkc