我有一个 csv 文件,如下所示:学生姓名、地址。
但是,学生姓名列可能有重复项,所以如果是这种情况,我需要创建一个仅包含那些重复的学生姓名和地址的新文件 - 继续操作,直到每个文件在特定文件中都没有重复的学生姓名。
即。
Student Names Address
John 5 West st.
David 42 Alan st.
John 22 Dees st.
Smith 2 King st.
David 77 Jack st.
John 33 King st.
应该像这样分成3个文件: 第一个文件:
Student Names Address
John 5 West st.
David 42 Alan st.
Smith 2 King st.
第二个文件:
Student Names Address
John 22 Dees st.
David 77 Jack st.
第三个文件:
Student Names Address
John 33 King st.
我的逻辑是将文件放入 DataTable 中,然后创建一个包含学生姓名 -> 地址的字典——但是,字典将不起作用,因为它们的键不是唯一的。所以我的下一个逻辑是创建一个学生姓名列表并从那里找出重复项并创建一个数据表并从那里创建一个文件。我觉得这更复杂,因为它是 - 我很确定 LiNQ 中一定有更简单的方法 - 你们能帮我解决问题或提出一些建议吗。
谢谢。
最佳答案
Dictionary 方法实际上非常好。我会坚持下去。将字典的键、名称和值设为地址。这样您就可以通过查找具有最多地址的名称来知道需要创建多少个文件。地址数将是您需要创建的文件数。
然后遍历名称列表并添加它们和地址以按顺序分隔文件。然后,一旦所有的名字都用完了,你就完成了。
在你上面的例子中,你将有一个这样的字典
John -> 5 West st., 22 Dees st., 33 King st.
David -> 42 Alan st., 77 Jack st.
Smith -> 2 King st.
正如@ric 所说,这将是一个 Dictionary<string, List<string>>
关于c# 删除重复算法 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32655229/