【问题标题】:.Net How To Get Common Elements in List by Count.Net 如何按计数获取列表中的常见元素
【发布时间】:2020-02-10 11:57:50
【问题描述】:

我想要这样的东西,但它无法编译:

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;

【问题讨论】:

    标签: .net list linq lambda count


    【解决方案1】:

    你必须这样做:

    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();
    

    您可以将项目分组,然后您可以找出哪个数字在您的列表中出现了四次。

    【讨论】:

    • 啊,编译所以 GroupBy() 使 Count() 最终出现。 :D 谢谢
    【解决方案2】:

    demo on dotnet fiddle

    你需要先分组。

        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]);
    

    【讨论】:

    • 我给了你一些实现的方法,请看@user51902
    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 2015-12-03
    • 2019-06-15
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    相关资源
    最近更新 更多