2017-04-23 16 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 
    } 

私の要素を持つ文字列のリストを返すべきであるので、重複します。私はそれが唯一のリストに2を返します

Public static string GetDuplicates() 
{ 

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

以下の私の方法からこれを呼び出しています

、正しい結果がリストに1,2でなければなりません。

+1

入力方法と一部の[MCVE]なく一部として一緒にこれを入れてください。 –

+1

最初の '1'には空白があります。 'Trim'を使用して切り捨てるか、整数だけで作業している場合は、_Array.ConvertAllを使用して入力をintに解析します。 _ –

+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

Hum。 GroupByとCountは問題を解決します – CodeNotFound

+0

なぜここにdownvote? – Sajeetharan

+0

私を信じていないか、それは私ではない;-)私がコメントしたからといって、私がdownvoteやupvoteを意味するわけではない;-) – CodeNotFound

関連する問題