私は次のような人のクラスを持っています:
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 クエリを実行してすべての重複を別のリストに取得することです。このようにして、重複を取得するためだけに追加のコレクションを作成する必要があります。
別のリストを作成するよりも良い方法があるはずです。
ポインタはありますか?