ChartData.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace wispro.sp.share
  8. {
  9. public class ChartData
  10. {
  11. public string type { get; set; }
  12. public string CustomerType { get; set; }
  13. public string year { get; set; }
  14. public string CustomerYear { get; set; }
  15. public double value { get; set; }
  16. }
  17. public class ChartDatas
  18. {
  19. public List<ChartData> Datas { get; set; }
  20. public string Title { get; set; }
  21. public string ATitle { get; set; }
  22. public string BTitle { get; set; }
  23. protected static List<string> GetColumns(List<ChartData> chartDatas)
  24. {
  25. List<string> retColumns = new List<string>();
  26. foreach (var cData in chartDatas)
  27. {
  28. if (!retColumns.Contains(cData.year))
  29. {
  30. retColumns.Add(cData.year);
  31. }
  32. }
  33. retColumns.Sort();
  34. return retColumns;
  35. }
  36. public DataTable GetTableData()
  37. {
  38. DataTable retTable = new DataTable();
  39. List<string> Columns = GetColumns(Datas);
  40. retTable.Columns.Add(ATitle);
  41. foreach (string col in Columns)
  42. {
  43. retTable.Columns.Add(col);
  44. }
  45. foreach (var cData in Datas)
  46. {
  47. int iIndex = Columns.IndexOf(cData.year);
  48. DataRow row = null;
  49. foreach (DataRow temRow in retTable.Rows)
  50. {
  51. if (temRow[ATitle].ToString() == cData.type)
  52. {
  53. row = temRow;
  54. break;
  55. }
  56. }
  57. if (row != null)
  58. {
  59. row[cData.year] = cData.value;
  60. }
  61. else
  62. {
  63. row = retTable.NewRow();
  64. row[ATitle] = cData.type;
  65. row[cData.year] = cData.value;
  66. retTable.Rows.Add(row);
  67. }
  68. }
  69. return retTable;
  70. }
  71. }
  72. }