C# 比较两个csv文件并输出值

C# 比较两个csv文件并输出值,c#,csv,C#,Csv,我得到了两个.csv文件,如下所示: 第一个文件: "id" 4 1 3 "id" 1 2 3 4 5 第二个文件: "id" 4 1 3 "id" 1 2 3 4 5 我想检查第一个文件中是否有第二个文件中的所有值(无论它们在哪一行)。在我的示例中,与第二个文件相比,第1个文件2和5中的值缺失,因此我希望以某种方式输出这些值。我该怎么做呢?所以你知道如何阅读它们,却不知道如何找出遗漏的内容?您可以使用可枚举

我得到了两个
.csv
文件,如下所示:

第一个文件:

"id"
4
1
3
"id"
1
2
3
4
5
第二个文件:

"id"
4
1
3
"id"
1
2
3
4
5

我想检查第一个文件中是否有第二个文件中的所有值(无论它们在哪一行)。在我的示例中,与第二个文件相比,第1个文件25中的值缺失,因此我希望以某种方式输出这些值。我该怎么做呢?

所以你知道如何阅读它们,却不知道如何找出遗漏的内容?您可以使用可枚举的
。除了

IEnumerable<string> firstFileIds = GetFileIds(...);
IEnumerable<string> secondFileIds = GetFileIds(...);
IEnumerable<string> missingInFirst = secondFileIds.Except(firstFileIds);

Console.Write($"Missing in 1st file: {string.Join(",", missingInFirst)}");
IEnumerable FirstFileId=GetFileId(…);
IEnumerable secondFileId=getFileId(…);
IEnumerable missingInFirst=secondfileid.Except(firstfileid);
Write($”在第一个文件中丢失:{string.Join(“,”,missingInFirst)});

所以你知道如何阅读它们,却不知道如何找出遗漏的内容?您可以使用可枚举的
。除了

IEnumerable<string> firstFileIds = GetFileIds(...);
IEnumerable<string> secondFileIds = GetFileIds(...);
IEnumerable<string> missingInFirst = secondFileIds.Except(firstFileIds);

Console.Write($"Missing in 1st file: {string.Join(",", missingInFirst)}");
IEnumerable FirstFileId=GetFileId(…);
IEnumerable secondFileId=getFileId(…);
IEnumerable missingInFirst=secondfileid.Except(firstfileid);
Write($”在第一个文件中丢失:{string.Join(“,”,missingInFirst)});

这是否回答了您的问题@DragandDrop以及如何首先将其加载到lisdt?用于查找第一个链接中“不在”或“除了”的关键字,以及第二个链接中的“要列表的文件字符串”。例如,使用加载您的CSV,然后您可以像往常一样使用记录列表对它们进行比较。这是否回答了您的问题@DragandDrop以及如何首先将其加载到lisdt?关键字用于查找第一个链接中“不在”或“除外”,第二个链接中的“要列出的文件字符串”。例如,使用,然后,您可以像往常一样使用记录列表来执行它们之间的比较。错误:无法从“System.Collections.Generic.IEnumerable”转换为“char”。还有一个问题,您知道如何将重复项列在第一个列表中吗?@Henry:
var dups=firstFileIds.GroupBy(id=>id)。其中(g=>g.Count()>1)。选择(g=>g.Key)。除了
g.Count()>1
之外,您还可以使用
g.Skip(1).Any()
,因为这可能更有效恐怖:无法从'System.Collections.Generic.IEnumerable'转换为'char'。还有一个问题,您知道如何将重复项列在第一个列表中吗?@Henry:
var dups=firstFileIds.GroupBy(id=>id).其中(g=>g.Count()>1).选择(g=>g.Key);
。除了
g.Count()>1
之外,您还可以使用
g.Skip(1)。Any()
,因为这样效率更高