0

有没有更简单的方法将 Telerik orm 实体列表转换为 csv 格式?

4

1 回答 1

0

以下简单的静态类将帮助您完成此任务。请注意,它将创建一个 .csv 文件,其中包含实体属性的值,而不考虑导航属性:

public static partial class EntitiesExporter
{
    public static void ExportEntityList<T>(string fileLocation, IEnumerable<T> entityList, string seperator = " , ")
    {
        string content = CreateFileContent<T>(entityList, seperator);
        SaveContentToFile(fileLocation, content);
    }

    private static string CreateFileContent<T>(IEnumerable<T> entityList, string seperator)
    {
        StringBuilder result = new StringBuilder();
        List<PropertyInfo> properties = new List<PropertyInfo>();
        foreach (PropertyInfo item in typeof(T).GetProperties())
        {
            if (item.CanWrite)
            {
                properties.Add(item);
            }
        }

        foreach (T row in entityList)
        {
            var values = properties.Select(p => p.GetValue(row, null));
            var line = string.Join(seperator, values);
            result.AppendLine(line);   
        }

        return result.ToString();
    }

    private static void SaveContentToFile(string fileLocation, string content)
    {
        using (StreamWriter writer = File.CreateText(fileLocation))
        {
            writer.Write(content);
            writer.Close();
        }
    }
}

您可以在代码中使用这样的类:

using (EntitiesModel dbContext = new EntitiesModel())
{
    IQueryable<Category> cats = dbContext.Categories;

    string appDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
    string fileLocation = Path.Combine(appDir, "test.csv");
    EntitiesExporter.ExportEntityList<Category>(fileLocation, cats);
}

我希望这有帮助。

于 2014-05-21T12:41:53.900 回答