我有一个相对较大的CSV文件,有很多列.我需要读取该文件,并确定是否有多个记录具有相同的"测试文件名"字段,并且只获取第一个记录(按日期)并将其复制到新文件中,实质上删除了"重复的".这些记录不是真正的副本,因 for each 记录都有不同的数据,但都有相同的"测试文件名",所以,一般的"删除重复项"方法对我不起作用.重复项很少,所以我需要遍历所有记录,只获取第一个输入的记录,这由记录中的"Date Time"字段确定.

我只需要每个"测试文件名"中的一个

Duplicate Records

Identifying fields

我try 了GROUP BY和ORDER BY,但我不确定我做得是否正确,因为它没有删除第二条记录.

更新:让我澄清一下,这个文件并不是那么大,它不到1 MB,但有数千条记录.我正try 在SSIS包的脚本任务中执行此过程.我很抱歉在这里发帖时的无知,以及整个主题的无知.我是C#的新手,因为我主要在SQL中工作.

推荐答案

感谢您的所有意见,我终于能够使用LINQ类似@Dmitry的 comments ,但有一个不同的变体,它起作用了.我想这可能会在future 对其他人有所帮助,所以我想把这个解决方案贴出来.

            if (File.Exists(databasedatacsv))
            {
                //Read original file and remove duplicates
                var data = File.ReadAllLines(databasedatacsv)
                                    .Select(x => x.Split(','))
                                    .Where(x => x[1] != "")
                                    .GroupBy(x => x[1])
                                    .Select(x => x.OrderBy(y => y[2]).First());

                foreach(var item in data)
                {
                    string s = string.Join(",", item);
                    //Dump the data into a new CSV so we aren't modifying the original file
                    AppendPSFile(psdatabasedatacsv, s);
                }

Csharp相关问答推荐

.NET最小API映射将T参数列表为[FromQuery]

为什么总输出就像12.3没有一分一样?

需要在重新启动ApplicartionPool或IIS后启动/唤醒API的帮助

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

共享暂存/生产环境中Azure事件中心的建议配置

在EF Core中,有没有什么方法可以防止在查询中写入相同的条件,而代之以表达式?

在使用Audit.NET的AuditTrail实现中,如何逐月将数据摄取到AzureTableStorage?

如何使用XmlSerializer序列化带有CDATA节的XML文件?

C# CompareTo()和Compare()可以返回除-1和1以外的整数吗?

DbContext-传递自定义配置选项

是否有必要在ASP.NET Core中注册可传递依赖项?

为什么方法的值在SELECT方法中不会更改?

按需无缝转码单个HLS数据段

对于PowerShell中的ConvertTo-SecureString方法,Microsoft如何将初始化向量添加到AES加密中的安全字符串?

单元测试类型为HttpClient with Microsoft.Extensions.Http.Resilience

我可以强制System.Text.Json.JsonSerializer以非递归方式工作吗?

如何在Polly重试策略成功之前将HttpClient请求排队?

RCL在毛伊岛应用程序和Blazor服务器应用程序.Net 8.0中使用页面

CsvHelper在第二次迭代时抛出System.ObjectDisposedException

无法停止PowerShell中的低级挂钩(c#挂钩)