Как я могу сгруппировать дубликаты из коллекции? - PullRequest
1 голос
/ 07 августа 2010

Я создаю программу, которая анализирует файл журнала на имя пользователя и его GUID (глобальный уникальный идентификатор) с помощью регулярных выражений. Пока что моя программа правильно извлекает данные и сохраняет их в DataTable с двумя столбцами. Вывод его содержимого с этим кодом:

foreach (DataRow dr in guids.Select("","guid"))
    {
        Console.WriteLine("GUID {0} has the name '{1}'\n", dr["guid"], dr["name"]);
    }

Пример вывода:

GUID c6c4486 has the name 'Daniel'
GUID c6c4486 has the name 'Mark'
GUID adh2j34 has the name 'Sophie'

Работает нормально, но я бы хотел сказать

GUID c6c4486 has the names 'Daniel' and 'Mark'
GUID adh2j34 has the name 'Sophie'

используя что-то вроде многомерного массива:

players['guidhere'][0] = Daniel;
players['guidhere'][1] = Mark;

Есть идеи, как подойти к этой проблеме? Стоит ли просто использовать массивы или есть что-то более динамичное?

Ответы [ 2 ]

4 голосов
/ 07 августа 2010

Вместо обработки в процесс с возможностью датирования в типизированный список объектов, используйте оператор группы LINQ:

var grps = from r in resultList
        group r by r.Guid into g
        select new { guid = g.Key, Names = String.Join(" and ", g) };
foreach(var g in grps)
  Console.WriteLine("GUID {0} has the names {1}", g.guid, g.Names);
0 голосов
/ 07 августа 2010

Ответ LINQ должен работать нормально, но я немного старомоден, и я думаю, что я бы пошел со словарем >. Заполнив его, вы можете легко просмотреть свой словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...