版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mj_kk/article/details/76871162
最近用DataTable用得的确有点多,开始的想法是用Linq对datatable进行 处理,进行查阅了资料之后发现,还有这种操作,今天也进行一下总结:
1.只显示datatable其中需要的几列字段
如:
DataTable yl_dt = new DataTable();
DataColumn dc0 = new DataColumn("卡号");
DataColumn dc1 = new DataColumn("空");
DataColumn dc2 = new DataColumn("摘要");
DataColumn dc3 = new DataColumn("交易金额");
DataColumn dc4 = new DataColumn("交易时间");
DataColumn dc5 = new DataColumn("交易序列号");
DataColumn dc6 = new DataColumn("授权号");
DataColumn dc7 = new DataColumn("手续费");
DataColumn dc8 = new DataColumn("冲正标志");
yl_dt.Columns.Add(dc0);
yl_dt.Columns.Add(dc1);
yl_dt.Columns.Add(dc2);
yl_dt.Columns.Add(dc3);
yl_dt.Columns.Add(dc4);
yl_dt.Columns.Add(dc5);
yl_dt.Columns.Add(dc6);
yl_dt.Columns.Add(dc7);
yl_dt.Columns.Add(dc8);
2.datatable中某个字段的求和
DataTable dt = yl_dt.DefaultView.ToTable(false, new string[] {"卡号", "交易序列号", "摘要", "冲正标志", "交易金额", "交易时间" });
foreach (DataRow row in dt.Rows)
{
zfb_money += double.Parse(row["字段名"].ToString());
}
3.datatable根据条件进行查询
/// <summary>
/// dataTable根据条件查询
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="name">查询字段</param>
/// <param name="value">查询条件值</param>
/// <returns></returns>
public DataTable ConditionQuery(DataTable dt, string name, string value)
{
//根据条件查询
DataRow[] dr = dt.Select(name + " = '" + value + "'");
DataTable dt1 = dt.Clone();
for (int i = 0; i < dr.Length; i++)
{
dt1.ImportRow(dr[i]);
}
return dt1;
}
4.清除datatable中数据某字段相同的数据
/// <summary>
/// 清除 退款 数据(数据中有重复的商品订单号,则清除这两条记录)
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="name">字段名</param>
/// <returns></returns>
public DataTable RefundDataExit(DataTable dt, string name)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
string dr = dt.Rows[i][name].ToString();
for (int j = i + 1; j < dt.Rows.Count; j++)
{
string dr1 = dt.Rows[j][name].ToString();
if (dr == dr1)
{
dt.Rows.RemoveAt(i);
dt.Rows.RemoveAt(j - 1);
if (i == 0)
{
i = -1;
}
}
}
}
return dt;
}
ps:四的方法也可以用作清除两个datatable中相同的数据行
如果大家有更好的方法,或者对datatable操作有其他的方法,欢迎指教