由各种方式得到的DataTable,去除DataTable里面重复的数据

分类:.Net知识问答| 发布:camnprbubuol| 查看: | 发表时间:2011/6/14

一:最近操作一个消息数据,以文件的形式保存,文件保存的格式是:

布布在线#bubuol.com#搞笑,经典#9011年06月10日 16:50:04

二:文件转换成DataTable的C#代码:

 

/// 
/// 从文本文件中读取数据,并包装成DataTable
///
/// 文件路径
/// 文件名
/// 字段间的分隔符
public static DataTable ReadFileToDataTable(string fileName, string split)
{
DataTable result = new DataTable();
string[] txtLines = File.ReadAllLines(fileName, System.Text.Encoding.UTF8);
string[] lineValues;
for (int i = 0; i < txtLines.Length; i++)
{
lineValues = txtLines[i].Split(split.ToCharArray());
if (0 == result.Columns.Count)
{
for (int k = 0; k < lineValues.Length; k++)
{
result.Columns.Add("");
}
}
result.LoadDataRow(lineValues, false);
}
return result;
}

三:接下来要剔除重复的记录:

写了一方法,利用DataTable中的DataView来取得表视图,然后将DataView又转换回DataTable来达到去掉某字段重复行值的目的.

 

//dt为需要转换的表

//PrimaryKeyColumns为dt中欲不含重复行值的列名

public DataTable GetDistinctPrimaryKeyColumnTable(DataTable dt, string[] PrimaryKeyColumns)
{
DataView dv = dt.DefaultView;
DataTable dtDistinct = dv.ToTable(true, PrimaryKeyColumns);

//第一个参数是关键,设置为 true,则返回的 System.Data.DataTable 将包含所有列都具有不同值的行。默认值为 false。
return dtDistinct;
}



方法2----------------------------------------------------------------------------------------

该方法只是为了一些只能在.net中去除重复行的操作,重复行,最好在SQL中实现。

 

        /// 
/// 返回需要唯一的字段的DT
///
/// 待操作的DT
/// 需要保证唯一的字段(也是返回的DT中的字段)
/// 返回数据唯一的DT
public DataTable GetDistinctPrimaryKeyColumnTable(DataTable dt, string[] PrimaryKeyColumns)
{
DataView dv = dt.DefaultView;
dv.RowFilter = "id <>"+_id ; //加过滤条件
DataTable dtDistinct = dv.ToTable(true, PrimaryKeyColumns);
return dtDistinct;
}


///
/// 冲突检查
///
/// /// protected void btnConfictSelect_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
BLL.BaseCase basecase = new YingKe.BLL.BaseCase();
string[] Clint = tbDelPerson.Text.Trim().Split(new char[] { ’,’, ’,’, ’.’, ’、’, ’:’, ’:’, ’。’, ’|’, ’?’, ’?’ });
for (int j = 0; j < Client.Length; j++)
{
DataSet c = basecase.GetchongwuPrivies(Clint[j]);
ds.Merge(c, true); //合并DS
}
string[] Pries = tbShakeerPerson.Text.Trim().Split(new char[] { ’,’, ’,’, ’.’, ’、’, ’:’, ’:’, ’。’, ’|’, ’?’, ’?’ });
for (int j = 0; j < Privies.Length; j++)
{
DataSet d = basecase.GetgwuPres(Pries[j]);
ds.Merge(d, true); //合并DS
}


DataTable dt = GetDistinctPrimaryKeyColumnTable(ds.Tables[0], new string[] { "ID", "yer", "Cnt", "Pries", "ModD", "BinTime", "CaeID", "CaName", "IsSte", "IsCct", "Islict", "Issh", "FiID" });

if (dt.Rows.Count != 0)
{
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind();
ClientScript.RegisterStartupScript(this.GetType(), "", "<script language=’javascript’> alert(’在突!’);</script>");
}
else
{
ClientScript.RegisterStartupScript(this.GetType(), "", "<script language=’javascript’>alert(’好在冲突!’);</script>");
}
}
365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/net-wiki/348.html