【问题标题】:C# Finding if a list contains an item duplicated 5 timesC#查找列表是否包含重复5次的项目
【发布时间】:2013-08-02 09:58:29
【问题描述】:

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

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

我认为他们一定是比逐个遍历列表并计算每个字符串有多少个实例更好的方法?

他们是一种简单的 LINQ 方法吗?

【问题讨论】:

  • “他们是一种简单的 LINQ 方法吗?”当然有,但并不比一个一个地浏览列表“更好”。

标签: c# linq list duplicates


【解决方案1】:

在性能方面没有什么比这更好的了,因为您显然需要至少遍历整个列表一次才能进行计数。但是在 LINQ 中,您可以使用更少的代码来解决问题,这是真的。像这样的东西应该可以解决问题:

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

【讨论】:

    【解决方案2】:
    stringListName.GroupBy(x => x).Any(x => x.Count() == 5);
    

    测试使用

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

    【讨论】:

      【解决方案3】:
       bool duplicated5times = list.GroupBy(x=>x).Any(x=>x.Count() == 5);
      

      【讨论】:

        【解决方案4】:
        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
             );
        

        【讨论】:

          【解决方案5】:

          它不漂亮,但这样就可以了

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

          【讨论】:

            猜你喜欢
            • 2018-06-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-08-26
            • 1970-01-01
            相关资源
            最近更新 更多