3

さまざまな文字列値を持つ 1 つ以上の要素を含むことができる文字列配列があります。配列内で最も一般的な文字列を見つける必要があります。

string aPOS[] = new string[]{"11","11","18","18","11","11"};

"11"この場合、私は戻る必要があります。

4

3 に答える 3

1

LINQ を使用したくない場合、または LINQ を持たない .Net 2.0 などを使用している場合は、foreach ループを使用できます。

string[] aPOS = new string[] { "11", "11", "18", "18", "11", "11"};
        var count = new Dictionary<string, int>();
        foreach (string value in aPOS)
        {
            if (count.ContainsKey(value))
            {
                count[value]++;
            }
            else
            {
                count.Add(value, 1);
            }
        }
        string mostCommonString = String.Empty;
        int highestCount = 0;
        foreach (KeyValuePair<string, int> pair in count)
        {
            if (pair.Value > highestCount)
            {
                mostCommonString = pair.Key;
                highestCount = pair.Value;
            }
        }            
于 2013-10-16T15:47:39.703 に答える
0

これはLINQで行うことができます。以下はテストされていませんが、正しい軌道に乗るはずです

var results = aPOS.GroupBy(v=>v) // group the array by value
                     .Select(g => new { // for each group select the value (key) and the number of items into an anonymous object
                                   Key = g.Key,
                                   Count = g.Count()
                                   })
                      .OrderByDescending(o=>o.Count); // order the results by count

// results contains the enumerable [{Key = "11", Count = 4}, {Key="18", Count=2}]

公式のGroup By ドキュメントは次のとおりです。

于 2013-10-16T15:29:17.487 に答える