1
int[] array = new int[10];
array[0] = 1;
array[1] = 1;
array[2] = 1;
array[3] = 2;
array[4] = 1;
array[5] = 2;
array[6] = 1;
array[7] = 1;
array[8] = 2;
array[9] = 3;

この結果を取得したい:

1 => 6 times
2 => 3 times
3 => 1 times

なしでこの結果を得る簡単な方法はありますif-else statementか?

ありがとう。

4

6 に答える 6

9

はい、LINQのGroupBy()を使用して:

var res = array.GroupBy(x => x)
               .Select(x => new {Number=x.Key,Times=x.Count()})
               .ToList();

注:
ToList()結果を1回だけ繰り返す場合は、必要ない場合があります。

于 2012-08-28T13:46:48.400 に答える
2

LINQを使用して、データをグループ化できます。

var result = array.GroupBy(x => x)
                  .Select(x => new { Value = x.Key, Count = x.Count() });
于 2012-08-28T13:46:59.050 に答える
2
array.GroupBy(a => a).Select(a => new { Value = a.Key, Count = a.Count() });
于 2012-08-28T13:47:29.727 に答える
1

Linqを使用して結果を計算できます。以下をコンソールアプリケーションに入れると、機能するはずです。

using System;
using System.Linq;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = new int[10];
            array[0] = 1;
            array[1] = 1;
            array[2] = 1;
            array[3] = 2;
            array[4] = 1;
            array[5] = 2;
            array[6] = 1;
            array[7] = 1;
            array[8] = 2;
            array[9] = 3;

            var group = from i in array
                        group i by i into g
                        select new
                        {
                            g.Key,
                            Sum = g.Count()
                        };

            foreach (var g in group)
            {
                Console.WriteLine(g.Key + " " + g.Sum);
            }
        }
    }
}
于 2012-08-28T13:48:29.697 に答える
1

これは、出力を作成できるようにするLinqステートメントです。

array.GroupBy(x => x).Select(x => new { x.Key, Count = x.Count() } );
于 2012-08-28T13:49:38.913 に答える
1

Enumerable.GroupByセレクターによってシーケンスをグループ化します。次に、グループを使用してそれらをカウントしたり、必要なことを実行したりできます。

var countGroups = array.GroupBy(a => a)
                       .OrderByDescending(g => g.Count());

foreach(var g in countGroups)
    Console.WriteLine("{0} => {1} times", g.Key, g.Count());

これがサンプルのデモです:http://ideone.com/WatNL

于 2012-08-28T13:49:45.313 に答える