Выбор похожих элементов из одного списка

У меня есть файл, содержащий информацию, анализированную из листа Excel:

 class ProfileRecord
{
    public string ProfileCode { get; set; }
    public string DID { get; set; }
    public string AppName { get; set; }
    public string lvl1 { get; set; }
    public string lvl2 { get; set; }
    public string lvl3 { get; set; }
    public string lvl4 { get; set; }
}

В другом классе я отправляю список этих записей для анализа. Одна вещь, которую я хочу сделать, это сделать var, который найдет все подходящие ProfileCodes. Итак, скажем, часть листа excel:

Name     Profile Code
Billy    134
Sally    156
Mary     134
Jimmy    134
Tom      189

Тогда у меня было бы что-то (я действительно не знаю):

var sameProfile = from a in profileList
                  where ( //some code to group all similar profile codes)
                  select new
                  {
                    name = a.Name
                  };

Если я должен был напечатать:

foreach(var p in sameProfile)
 {
    Console.WriteLine(p.name);
    Console.WriteLine("\n");
  }

Я хочу иметь:

Billy
Mary
Jimmy

Sally

Tom

Printed. Я не уверен, как найти все элементы simialr и сгруппировать их с помощью LINQ. Предложения? Спасибо.

+3
28 июл. '13 в 22:43
источник поделиться
2 ответа

Используйте Enumerable.GroupBy:

var profileCodeGroups = profileList
    .GroupBy(pr => pr.ProfileCode)
    .OrderBy(g => g.Key);

foreach(var grp in profileCodeGroups)
{
    foreach(var pr in grp)
        Console.WriteLine(pr.Name);
    Console.WriteLine("");
}
+5
28 июл. '13 в 22:47
источник

Вы хотите использовать метод GroupBy:

var results = profileList.GroupBy(a => a.ProfileCode)
                         .Select(g => g.Select(a => a.Name));

Или в синтаксисе запроса:

var results = 
    from a in profileList
    group a by a.ProfileCode into g
    select g.Select(a => a.Name);
+2
28 июл. '13 в 22:48
источник

Посмотрите другие вопросы по меткам или Задайте вопрос