TG.WXCRM.V4/Common/DataTableHelper.cs

109 lines
3.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Data;
using System.Xml;
namespace WX.CRM.Common
{
public class DataTableHelper
{
private DataTable dataTable;
public DataTable GetDataTable
{
get { return dataTable; }
set { dataTable = value; }
}
public DataTableHelper()
{
dataTable = new DataTable();
}
/// <summary>
/// 给DataTable添加列
/// </summary>
/// <param name="name"></param>
/// <param name="type"></param>
public void AddColumn(string name, Type type)
{
DataColumn column = new DataColumn();
column.ColumnName = name;
column.DataType = type;
dataTable.Columns.Add(column);
}
/// <summary>
/// 给DataTable添加列(默认string类型)
/// </summary>
/// <param name="name"></param>
public void AddColumn(string name)
{
DataColumn column = new DataColumn();
column.ColumnName = name;
column.DataType = typeof(System.String);
dataTable.Columns.Add(column);
}
public void LoadData(XmlDocument doc)
{
XmlElement root = doc.DocumentElement;
foreach (XmlNode row in root.ChildNodes)
{
DataRow dataRow = dataTable.NewRow();
foreach (XmlNode item in row.ChildNodes)
{
if (dataTable.Columns.Contains(item.Name))
{
dataRow[item.Name] = item.InnerText.Trim();
}
}
dataTable.Rows.Add(dataRow);
}
}
/// <summary>
/// 两个DataTable合并表结构不一样
/// </summary>
/// <param name="tab1">表1</param>
/// <param name="tab2">表2</param>
/// <returns></returns>
public static DataTable TwoDataTableMerge(DataTable tab1, DataTable tab2)
{
//克隆DataTable1的结构
DataTable newDataTable = tab1.Copy();
//-------把没有tab2的字段加上去
foreach (DataColumn column in tab2.Columns)
{
if (!newDataTable.Columns.Contains(column.ColumnName))
{
//column.Caption = model.EXCEL_COLNAME;
DataColumn col = new DataColumn(column.ColumnName, column.DataType);
//if (column.DataType == typeof(System.Decimal))
// col.DefaultValue = 0;
col.Caption = column.Caption;
newDataTable.Columns.Add(col);
}
}
foreach (DataRow row in tab2.Rows)
{
DataRow newRow = newDataTable.NewRow();
foreach (DataColumn column in tab2.Columns)
{
newRow[column.ColumnName] = row[column.ColumnName];
}
newDataTable.Rows.Add(newRow);
}
return newDataTable;
}
/// <summary>
/// 两个DataTable合并优化版,数据量多的作为基表)
/// </summary>
/// <param name="tab1">表1</param>
/// <param name="tab2">表2</param>
/// <returns></returns>
public static DataTable TwoDataTableMergeEfficiency(DataTable tab1, DataTable tab2)
{
if (tab2.Rows.Count > tab1.Rows.Count)
return TwoDataTableMerge(tab2, tab1);
else
return TwoDataTableMerge(tab1, tab2);
}
}
}