2017-01-09 29 views
-1

我有一個模型,我從相當複雜的查詢中填充。該模型看起來像:C#MVC將模型轉換爲字符串數組

List<CSVExportViewModel> data = GetData(dataset); 

foreach (CSVExportViewModel item in data) 
{ 
    writer.WriteLine("'" + string.Join("','", item) + "'"); 
} 

然而,代替的模型轉換成一個陣列,並輸出各個項:

public class CSVExportViewModel 
{ 
    public long Id { get; set; } 

    public string StudentNo { get; set; } 
    public string StudentIdNumber { get; set; } 
    public string StudentName { get; set; } 
    public string Parent1IdNumber { get; set; } 
    public string Parent1Name { get; set; } 
    public string Parent2IdNumber { get; set; } 
    public string Parent2Name { get; set; } 
    /* etc... */ 
} 

我現在用下面的代碼需要輸出模型到CSV文件該模型僅向生成的CSV文件的每一行輸出「Models.CSVExportViewModel」。

如何將模型轉換爲字符串數組才能正常工作?

+0

我不知道CSVExportViewModel是什麼,但絕對不是字符串。所以,C#編譯器正在打印'classname'。 – Prajwal

+0

你要告訴它寫'CSVExportViewModel'字符串是正確的嗎?但我敢打賭,你沒有在該類中寫入ToString方法,所以它不知道如何將其輸出到字符串。因此,您只需獲得類名稱 – ediblecode

+0

您需要輸出'CSVExportViewModel'的每個屬性 –

回答

0

感謝所有。 @MathewJibin指出我正確的方向。我在我的模型來實現ToArray的()如下:

public class CSVExportViewModel 
{ 
    public long Id { get; set; } 
    public string StudentNo { get; set; } 
    public string StudentIdNumber { get; set; } 
    public string StudentName { get; set; } 
    public string Parent1IdNumber { get; set; } 
    public string Parent1Name { get; set; } 
    public string Parent2IdNumber { get; set; } 
    public string Parent2Name { get; set; } 
    /* etc... */ 
    public String[] ToArray() 
    { 
     List<string> arr = new List<string>(); 

     foreach (var prop in typeof(CSVExportViewModel).GetProperties()) 
     { 
      string value = ""; 
      if (prop.GetValue(this, null) != null) 
      { 
       value = prop.GetValue(this, null).ToString(); 
      } 

      arr.Add(value); 
     } 

     return arr.ToArray(); 
    } 
} 

然後就不得不修改代碼來調用item.ToArray();

謝謝大家的幫助!

0

在CSVExportViewModel類中實現toString()方法:

public override string ToString() 
{ 
    return Id + ", " + StudentNo + ", " + StudentIdNumber + ", " + StudentName + ", " + 
    Parent1IdNumber + ", " + Parent1Name + ", " + Parent2IdNumber + ", " + Parent2Name; 
} 
0

您可以動態創建一個數組

foreach (CSVExportViewModel item in data) 
{ 
    writer.WriteLine(string.Join(",", new object[] {item.prop1, item.prop2, item.prop3 ...})); 
}