2014-05-21 3 views

답변

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

도움이되기를 바랍니다.