2016-02-03 56 views
0

我从来没有将列表转换为DataTable并将其写入文本文件,但在我的尝试中,我的文件显示全部空白,仅包含空括号({}) 这是我的代码:将列表转换为DataTable空白{}

List<string> list = new List<string>(); 

foreach (var item in db.Pos) 
{ 
    var total = 0; 
    decimal costo = 0; 

    for (int i = 1; i <= 31; i++) 
    { 
     var value = 0; 

     if (item.Fecha.Day == i) 
     { 
      value = item.Cantidad; 
      costo = costo + item.Total; 
     } 

     total += value; 
    } 

    list.Add(item.Descripcion); 
    list.Add(item.Pdv); 
    list.Add(item.Rid); 
    list.Add(((costo/(total + 1)).ToString("C"))); 

    for (int i = 1; i <= 31; i++) 
    { 
     var value = 0; 
     list.Add(value.ToString()); 
     int month = item.Fecha.Month; 

     if (item.Fecha.Day == i) 
     { 
      value = item.Cantidad; 
      list.Add(value.ToString()); 
     } 
    } 

    list.Add(total.ToString()); 
    list.Add((((costo/(total + 1)) * total).ToString("C"))); 
} 
DataTable table = ToDataTable(list); 
System.IO.File.WriteAllText(@"\path.txt", table); 

这是我的功能转换我List<T>DataTable但使我的文件空:

public static DataTable ToDataTable<T>(List<T> items) 
{ 

    DataTable dataTable = new DataTable(typeof(T).Name); 

    //Get all the properties 
    PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); 

    foreach (PropertyInfo prop in Props) 
    { 
     //Setting column names as Property names 
     dataTable.Columns.Add(prop.Name); 
    } 

    foreach (T item in items) 
    { 
     var values = new object[Props.Length]; 

     for (int i = 0; i < Props.Length; i++) 
     { 
      //inserting property values to datatable rows 
      values[i] = Props[i].GetValue(item, null); 
     } 

     dataTable.Rows.Add(values); 
    } 

    //put a breakpoint here and check datatable 
    return dataTable; 
}  
+0

您可以在列表转换为数据表,但不是您要保存什么....你保存' JSON'无论如何。 [更新]有人编辑了您的问题,并意外删除了保存代码。 –

+0

是对于那个编辑我的问题的人道歉,并且创建了那部分代码,我只是添加了部分我调用了我的转换列表函数并将结果写入文件 –

回答

1

您还没有传递的数据表到WriteAllText方法除了WriteAllText方法没有一个 数据表的参数。您需要遍历数据表,并将其手动像这样写:

http://www.codeproject.com/Questions/244929/How-to-write-datatable-result-in-textfile

+0

但为此,我的列表必须转换为数据表的权利?所以知道我只需要手动编写它就像你的例子后,我调用functin转换我的列表的部分? –

+0

我不认为你有必要将你的列表转换为数据表,将它写入文件,除非你将它用于其他目的。你可以遍历列表并写出来。这样你的程序就不会做不必要的工作。 –

+0

我的目标是将列表获取到JqueryDatatable,但我无法这样做,因为当我将列表写入文件时,格式无效,并且更好的或合适的一个将以数据表格的形式存在,为什么我试图转换它unles imm做错的做法 –