怎么样删除csv表格中的重复行

.Net技术 码拜 4年前 (2016-01-29) 312次浏览
本人有一个csv表格,如下:
怎么样删除csv表格中的重复行
本人想实现这样的功能,通过第一列的数据来判断能否有重复项,假如有则删除重复项所在的行,最后得到的数据为
怎么样删除csv表格中的重复行
用C#语言怎样实现啊,最好有详细的代码,谢谢各位了!
解决方案:40分
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            List<TempClass> list = new List<TempClass>();
            List<String[]> ls = new List<String[]>();
            //读取csv文件
            StreamReader fileReader = new StreamReader(@"C:\Users\Administrator\Desktop\test.csv");  
            string strLine="";
            //读取csv的行并存储到泛型列表中
            while (strLine != null)
            {
                strLine = fileReader.ReadLine();
                if (strLine != null && strLine.Length>0)
                {
                    TempClass t = new TempClass() { ID = strLine.Split("","")[0], OriginalStr = strLine };
                    list.Add(t);
                }
            } 
            fileReader.Close();
            Console.WriteLine("before distinct↓↓↓↓");
            Console.WriteLine(list.Count);
            //对泛型进行去重
            var tempList = list.Distinct(new TempIDComparer());
            Console.WriteLine("after distinct↓↓↓↓");
            Console.WriteLine(tempList.ToList().Count);
            //将去重后的泛型集合写入新的csv文件
            StreamWriter fileWriter=new StreamWriter(@"C:\Users\Administrator\Desktop\result.csv",false,Encoding.Default);
            foreach(var item in tempList.ToList())
            {
                fileWriter.WriteLine(item.OriginalStr);
            }
            fileWriter.Flush();
            fileWriter.Close();
            Console.ReadKey();
        }
    }
    //将需要比较的列及原始数据行存入对象中
    public class TempClass
    {
        public string ID { get; set; }
        public string OriginalStr { get; set; }
    }
    //实现compare类 用于distinct方法
    public class TempIDComparer : IEqualityComparer<TempClass>
    {
        public bool Equals(TempClass x, TempClass y)
        {
            if (x == null)
                return y == null;
            return x.ID == y.ID;
        }
        public int GetHashCode(TempClass obj)
        {
            if (obj == null)
                return 0;
            return obj.ID.GetHashCode();
        }
    }
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样删除csv表格中的重复行
喜欢 (0)
[1034331897@qq.com]
分享 (0)