У меня есть человек класс, как так:Получение повторных данных из CSV файла
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
}
У меня есть объект словаря, в котором ключ является идентификатор и значение - это объект Person.
if(!this.PersonDataCollection.ContainsKey(personKey))
{
this.PersonDataCollection.Add(objPerson);
}
Это дает мне все уникальные объекты Person из файла CSV.
Я хочу создать список тех объектов Person, которые повторяются на основе Id в CSV. Так что список DuplicatePersons
будет:
"123","ABC","DEF"
"123","MNO","PQR"
в нем.
Путь с пустыми костями заключается в том, чтобы сначала прочитать все объекты человека в списке, а затем выполнить запрос LINQ, чтобы получить все дубликаты в отдельном списке. Таким образом, я должен создать дополнительную коллекцию, чтобы получить дубликаты.
Должен быть лучший способ создать отдельный список.
Любые указатели?
является там способ динамически делать это var grouped = people.GroupBy (p => p.Id); Я имею в виду, можно ли уникальность выполнить во время выполнения? Пользователь может установить уникальный столбец в файле конфигурации. – Codehelp
hmm ... обязательно. Позвольте мне отредактировать мой ответ. –
@Codehelp отредактирован. –