从csv中删除C#中重复的数字组合

从csv中删除C#中重复的数字组合,c#,C#,我正在尝试从csv文件中删除重复的组合 我尝试使用Distinct,但它似乎保持不变 string path; string newcsvpath = @"C:\Documents and Settings\MrGrimm\Desktop\clean.csv"; OpenFileDialog openfileDial = new OpenFileDialog(); if (openfileDial.ShowDialog() == DialogResult.OK) { path = o

我正在尝试从csv文件中删除重复的组合

我尝试使用Distinct,但它似乎保持不变

string path;
string newcsvpath = @"C:\Documents and Settings\MrGrimm\Desktop\clean.csv";

OpenFileDialog openfileDial = new OpenFileDialog();

if (openfileDial.ShowDialog() == DialogResult.OK)
{
    path = openfileDial.FileName;

    var lines = File.ReadLines(path);
    var grouped = lines.GroupBy(line => string.Join(", ", line.Split(',').Distinct())).ToArray();

    var unique = grouped.Select(g => g.First());
    var buffer = new StringBuilder();

    foreach (var name in unique)
    {
        string value = name;
        buffer.AppendLine(value);
    }

    File.WriteAllText(newcsvpath ,buffer.ToString());
    label5.Text = "Complete";
}
例如,我有一个

{ 1,1,1,1,1,1,1,1 }      { 1,1,1,1,1,1,1,2 } 
{ 2,1,1,1,1,1,1,1 }      { 1,1,1,2,1,1,1,1 }
输出应该是

{ 1,1,1,1,1,1,1,1 }
{ 2,1,1,1,1,1,1,1 } 

从你的例子看来,你想把每一行当作一个数字序列,如果一个序列是另一个序列,那么你认为两条线相等。

因此,通过读取您的文件,您可以:

var lines = new[] 
{
    "1,1,1,1,1,1,1,1",
    "1,1,1,1,1,1,1,2",
    "2,1,1,1,1,1,1,1",
    "1,1,1,2,1,1,1,1"
};
现在,让我们将其转换为数字序列数组:

var linesAsNumberSequences = lines.Select(line => line.Split(',')
        .Select(int.Parse)
        .ToArray())
    .ToArray();
或者更好,因为我们对排列不感兴趣,我们可以立即对序列中的数字进行排序:

var linesAsSortedNumberSequences = lines.Select(line => line.Split(',')
        .Select(int.Parse)
        .OrderBy(number => number)
        .ToArray())
    .ToArray();
在这个问题上使用Distinct时,我们必须传递一个比较器,该比较器认为两个数组相等,如果它们具有相同的元素。让我们使用来自

var result=linesAsSortedNumberSequences.Distinct(新的IEnumerableComparer());
试试看

HashSet<string> record = new HashSet<string>();
foreach (var row in dtCSV.Rows)
{
    StringBuilder textEditor= new StringBuilder();
    foreach (string col in columns)
    {
        textEditor.AppendFormat("[{0}={1}]", col, row[col].ToString());
    }
    if (!record.Add(textEditor.ToString())
    {
    }
}
HashSet记录=新的HashSet();
foreach(dtCSV.Rows中的变量行)
{
StringBuilder textEditor=新建StringBuilder();
foreach(列中的字符串列)
{
textEditor.AppendFormat(“[{0}={1}]”,col,row[col].ToString());
}
如果(!record.Add(textEditor.ToString())
{
}
}
HashSet<string> record = new HashSet<string>();
foreach (var row in dtCSV.Rows)
{
    StringBuilder textEditor= new StringBuilder();
    foreach (string col in columns)
    {
        textEditor.AppendFormat("[{0}={1}]", col, row[col].ToString());
    }
    if (!record.Add(textEditor.ToString())
    {
    }
}