c # как получить все уникальные комбинации из списка объектов и их частоты - PullRequest
0 голосов
/ 14 мая 2019

Так что в c # я пытаюсь отсортировать список объектов, чтобы я мог получить каждую уникальную комбинацию и подсчитать, как часто они встречаются в списке.

Этот список, который у меня есть, выглядит следующим образом:

    List<Numbers> nums = new List<Numbers>();

    public class Numbers
    {
        public int numOne { get; set; }
        public int numTwo { get; set; }
    }

    nums.Add(new Numbers { numOne = 1, numTwo = 2});
    nums.Add(new Numbers { numOne = 4, numTwo = 7});
    nums.Add(new Numbers { numOne = 1, numTwo = 2});

Теперь я хочу получить новый список, который в основном фильтрует список "nums", чтобы у меня был следующий результат:

    1  |  2  -->  2
    4  |  7  -->  1

Я экспериментировал с linq, но яне могу найти правильный путь для достижения желаемого результата.

1 Ответ

3 голосов
/ 14 мая 2019

Попробуйте это.Используя LINQ, вы можете сгруппировать список чисел по numOne и numTwo одновременно.Затем вы можете выбрать свойства и рассчитать количество, выбрав Count значений в списке чисел, где были выполнены условия группового режима.Вы можете использовать его, как считаете нужным.Я просто распечатал его в окне консоли и получил доступ к свойствам так же, как и к обычному списку.Надеюсь, что это поможет.

var filtered = nums.GroupBy(n => new { n.numOne, n.numTwo })
                   .Select(x => new
                   {
                       x.Key.numOne,
                       x.Key.numTwo,
                       count = x.Count()
                   })
                   .ToList();

for (int i = 0; i < filtered.Count; i++)
    Console.WriteLine(string.Format("{0} | {1} --> {2}", 
                        filtered[i].numOne, 
                        filtered[i].numTwo, 
                        filtered[i].count));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...