0

Is there easier way to convert telerik orm entity list to csv format?

Ranga
  • 3
  • 1

1 Answers1

0

The following simple static class will help you in this task. Note that it will create a .csv file, which contains the values of the entity's properties without taking into account the navigation properties:

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();
        }
    }
}

You can consume the class like this in your code:

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);
}

I hope this helps.