代码端C#的DataTable过滤器

时间:2011-06-14 13:50:06

标签: c# .net filter datatable

我有一个DataTable,我通过上传来自用户的CSV文档得到它,并且有像这样的列:

Email      Age      Team
x@x.com    25       BarcelonaFC
y@y.com    32       BesiktasJK
z@z.com    18       Napoli
y@y.com    19       Boca Juniors
x@x.com    36       Internazionale

我需要在将数据表插入数据库之前对其进行过滤。电子邮件列应该是唯一的。所以我需要过滤那个数据表,以便我得到消除2行的结果。我不想使用LINQ,但如果它只是解决方案,那就好了。

Email      Age      Team
x@x.com    25       BarcelonaFC
y@y.com    32       BesiktasJK
z@z.com    18       Napoli

3 个答案:

答案 0 :(得分:1)

您可以创建一个HashSet<string>保留电子邮件地址,然后在表格中向后循环,将每行的电子邮件地址添加到哈希集,如果它已经存在(如果Add返回false) ,删除该行。

答案 1 :(得分:0)

你可以尝试这样的事情......

var dt = new DataTable();
dt = yourCurrentDataTable.DefaultView.ToTable(true, "Email", "Age", "Team");

答案 2 :(得分:0)

您可以使用词典:

首先,您可以创建简单的类:

class Data
{
  public int Age;
  public string Team;
}

之后,您可以将数据插入字典:

Dictionary<string, MyData> dic = new Dictionary<string, MyData>();
foreach(DataRow row in YourDataTable)
{
  if(!dic.ContainsKey(row[.. email ..])) 
  {
    dic.Add(..., ...);
  }
}

现在你的词典准备好了......