2017-04-23 76 views
-4

我有一个字符串数组,我想要查找数组中出现4次或多于4次的元素。获取数组中出现次数为4次的元素

我的代码

internal static void ProcessArray(string[] numArray) 
     { 
      string response = string.Empty; 

      var duplicates = (numArray 
         .GroupBy(e => e) 
         .Where(e => e.Count() >= 4) 
         .Select(e => e.First())).ToList(); 
//do some further business logic 
    } 

因此重复应该返回我拥有的元素字符串列表。

我从我的方法如下

Public static string GetDuplicates() 
{ 

string[] s = new new string[]{" 1","1","2","2","2","1","3,"2","1" } 
string result = ProcessArray(s); 
return result 
} 

只在列表返回2调用此,正确的结果应该是在列表1,2。

+1

请一起把这个作为[MCVE]而不是输入的方法和部件的一部分。 –

+1

你的第一个'1'有空格。无论是使用'Trim'截断它,否则如果你只使用整数解析你的输入到'int'使用_Array.ConvertAll _ –

+0

@JonSkeet我已经做了更正 – ankur

回答

1
var values = new string [] { "1", "1", "2", "2", "2", "1", "3", "2", "1" }; 
var groups = values.GroupBy(i => i).Select(i => new { Number = i.Key, Count = i.Count() }); 
foreach(var item in groups) 
{ 
if(item.Count == 4) 
{ 
    Console.WriteLine(item.Number); 
} 
} 

WORKING FIDDLE

+0

嗡嗡声。 GroupBy和Count将解决问题 – CodeNotFound

+0

为什么downvote在这里? – Sajeetharan

+0

相信我与否,这不是我;-)只是因为我的评论并不意味着我downvote或upvote ;-) – CodeNotFound