我有一个像这样的人类:
class Person
{
string Id { get; set; }
string FirstName { get; set; }
string LastName { get; set; }
}
有一个 CSV 文件,其中包含人员数据,例如
"123","ABC","DEF"
"456","GHI","JKL"
"123","MNO","PQR"
...
一个人基于 ID 是唯一的。
CSV 的读取方式如下:
using (StreamReader sr = new StreamReader(inputFile))
{
string[] arrCsvData;
string strLine;
while ((strLine = sr.ReadLine()) != null)
{
arrCsvData = strLine.Split(',');
this.LoadPersonData(arrCsvData);
}
}
在LoadPersonData
一个新Person
对象中创建并分配来自 CSV 的值:
Person objPerson = new Person();
for (int i = 1; i <= arrCsvData.Length - 1; i++)
{
// Assign person property values from arrCsvData
}
我有一个字典对象,其中键是 ID,值是 Person 对象。
if(!this.PersonDataCollection.ContainsKey(personKey))
{
this.PersonDataCollection.Add(objPerson);
}
这为我提供了 CSV 文件中所有唯一的 Person 对象。
我想创建一个基于 CSV 中的 Id 重复的 Person 对象的列表。所以列表DuplicatePersons
将有:
"123","ABC","DEF"
"123","MNO","PQR"
在里面。
最基本的方法是首先将所有人员对象读入一个列表,然后执行 LINQ 查询以将所有重复项放在一个单独的列表中。这样我必须创建一个额外的集合来获取重复项。
应该有比创建单独列表更好的方法。
任何指针?