0

有没有办法引用具有表名和源查询的 csv 或其他数据源来生成 BIML 文档?

谢谢

4

1 回答 1

1

请注意 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>
于 2017-10-23T09:46:20.543 回答