如何将Telerik ORM实体列表转换为csv文件

本文关键字:转换 csv 文件 列表 实体 Telerik ORM | 更新日期: 2023-09-27 18:04:33

是否有更简单的方法将远程表单实体列表转换为csv格式?

如何将Telerik ORM实体列表转换为csv文件

下面的简单静态类将帮助您完成此任务。注意,它将创建一个.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);
}