C#查找列表是否包含重复5次的项目

时间:2013-08-02 09:58:30

标签: c# linq list duplicates

我有一个很大的字符串列表。我想知道列表是否包含任何重复5次的字符串。

如果该项目重复6次或更多,我不想知道。

我认为他们必须比通过列表更好的方式并计算每个字符串的实例数量?

他们是一个简单的LINQ方式吗?

5 个答案:

答案 0 :(得分:4)

在性能方面没有比这更好的了,因为你显然需要至少迭代一次整个列表来进行计数。但是在LINQ中,您可以使用更少的代码,这是事实。这样的事情可以解决问题:

var listOfFiveTimers = list.GroupBy(s => s)
                           .Where(g => g.Count() == 5)
                           .Select(g => g.Key)
                           .ToList();

答案 1 :(得分:2)

stringListName.GroupBy(x => x).Any(x => x.Count() == 5);

使用

测试
 var stringListName = new string[] { "a", "a", "a", "a", "a", "b" };

答案 2 :(得分:1)

 bool duplicated5times = list.GroupBy(x=>x).Any(x=>x.Count() == 5);

答案 3 :(得分:0)

List<string> l = new List<string>();
    l.Add("a");
    l.Add("a");
    l.Add("a");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("b");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");
    l.Add("c");

    l.GroupBy
    (
        x => x
    )
    .Select 
    (
        x => 
        new
        {
            x.Key,
            count = x.Count ()
        }
     )
     .Where 
     (
        x => x.count==5
     );

答案 4 :(得分:0)

它并不漂亮,但这样做会

static void Main(string[] args)
{
    var items = new[] {1, 1, 1, 1, 1, 3, 2, 1, 5, 2};

    var over = items.Distinct().ToList().Where(i=>items.Where(it => it == i).Count() > 5);
    Console.Read();
}