. Net Как получить общие элементы в списке по количеству - PullRequest
2 голосов
/ 10 февраля 2020

Я хочу что-то подобное, но оно не компилируется:

List<uint> numbers = new List<uint> { 4, 2, 2, 2, 2, 7};
var List_Of_Count_4_Elements = numbers.Where(x => x.Count() == 4).Select(x => x.Key).ToList();

// The result should look like this:
List_Of_Count_4_Elements[0] == 2;

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Вы должны сделать что-то вроде этого:

List<uint> numbers = new List<uint> { 4, 2, 2, 2, 2, 7};
var List_Of_Count_4_Elements = numbers.GroupBy(x => x).Where(x => x.Count() == 4).Select(x => x.Key).ToList();

Вы можете сгруппировать элементы, а затем вы можете узнать, какое число четыре раза в вашем списке.

0 голосов
/ 10 февраля 2020

демо на до tnet скрипка

Сначала необходимо сгруппировать.

    List<uint> numbers = new List<uint> { 4, 2, 2, 2, 2, 7};
    var Max_Elements_Count = 4;

    var result1 = numbers.GroupBy(p => p)
                        .Where(x => x.Count() == Max_Elements_Count)
                        .Select(x => x.Key).ToList();   

    var result2 = numbers.GroupBy(p => p, (k, group) =>  new { Key = k, Element_Count = group.Count() })
                         .Where(x => x.Element_Count == Max_Elements_Count).ToList();


    var result3 = (from n in numbers
                  group n by n into groupList
                  where  groupList.Count() == Max_Elements_Count
                  select groupList.Key).ToList();

    Console.WriteLine(result1[0]);
    Console.WriteLine(result2[0].Key);
    Console.WriteLine(result3[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...