Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中为int列表构建直方图#_C#_Linq - Fatal编程技术网

C# 如何在C中为int列表构建直方图#

C# 如何在C中为int列表构建直方图#,c#,linq,C#,Linq,可能重复: 我有一个int列表,list demoList,它类似于{1,2,1,1,1,3,2,1},我想写一个LINQ语句,从该列表中获得出现次数最多的数字,在我的例子中是1使用groupby子句 var groups = from i in demoList group i by i into g select new { Value = g.Key, Count = g.Count() } 从这里你可以说 var max = groups.Max(g =&g

可能重复:


我有一个int列表,
list demoList
,它类似于
{1,2,1,1,1,3,2,1}
,我想写一个LINQ语句,从该列表中获得出现次数最多的数字,在我的例子中是
1
使用
groupby
子句

var groups = 
    from i in demoList
    group i by i into g
    select new { Value = g.Key, Count = g.Count() }
从这里你可以说

var max = groups.Max(g => g.Count);
groups.Where(g => g.Count == max).Select (g => g.Value); // { 1 }
编辑:如果您还想知道哪个数字出现的频率:

var appearances = demoList.GroupBy(i => i)
    .OrderByDescending(grp => grp.Count())
    .Select(grp => new { Num = grp.Key, Count = grp.Count() });
if (appearances.Any())
{
    int highestAppearanceNum = appearances.First().Num;     // 1
    int highestAppearanceCount = appearances.First().Count; // 5
}

我提前道歉:

        List<int> demoList = new List<int>() { 1, 2, 1, 1, 1, 3, 2, 1 };

        Dictionary<int,int> keyOrdered = demoList.GroupBy(i => i)
            .Select(i => new { i.Key, Count = i.Count() })
            .OrderBy(i=>i.Key)
            .ToDictionary(i=>i.Key, i=>i.Count);

        var max = keyOrdered.OrderByDescending(i=>i.Value).FirstOrDefault();

        List<string> histogram = new List<string>();

        for (int i = max.Value; i >-1 ; i--)
        {
            histogram.Add(string.Concat(keyOrdered.Select(t => t.Value>i?"| ":"  ")));
        }

        histogram.Add(string.Concat(keyOrdered.Keys.OrderBy(i => i).Select(i => i.ToString() + " ")));

        histogram.ForEach(i => Console.WriteLine(i));

        Console.WriteLine(Environment.NewLine);
        Console.WriteLine("Max: {0}, Count:{1}", max.Key, max.Value);
List demoList=newlist(){1,2,1,1,1,3,2,1};
Dictionary keyOrdered=demoList.GroupBy(i=>i)
.Select(i=>new{i.Key,Count=i.Count()})
.OrderBy(i=>i.Key)
.ToDictionary(i=>i.Key,i=>i.Count);
var max=keyorded.OrderByDescending(i=>i.Value).FirstOrDefault();
列表直方图=新列表();
对于(int i=最大值;i>-1;i--)
{
添加(string.Concat(keyOrdered.Select(t=>t.Value>i?”);
}
Add(string.Concat(keyOrdered.Keys.OrderBy(i=>i).Select(i=>i.ToString()+));
histogram.ForEach(i=>Console.WriteLine(i));
Console.WriteLine(Environment.NewLine);
WriteLine(“Max:{0},Count:{1}”,Max.Key,Max.Value);

当我读到这个标题时,我想到了这一点,这让我笑了。。(prolly也充满了bug!)

这是dup,但这个问题非常清楚,格式也更好;)
 int highestAppearanceNum = demoList.GroupBy(i => i)
            .OrderByDescending(grp => grp.Count())
            .Select(grp => grp.First())
            .First();
var appearances = demoList.GroupBy(i => i)
    .OrderByDescending(grp => grp.Count())
    .Select(grp => new { Num = grp.Key, Count = grp.Count() });
if (appearances.Any())
{
    int highestAppearanceNum = appearances.First().Num;     // 1
    int highestAppearanceCount = appearances.First().Count; // 5
}
        List<int> demoList = new List<int>() { 1, 2, 1, 1, 1, 3, 2, 1 };

        Dictionary<int,int> keyOrdered = demoList.GroupBy(i => i)
            .Select(i => new { i.Key, Count = i.Count() })
            .OrderBy(i=>i.Key)
            .ToDictionary(i=>i.Key, i=>i.Count);

        var max = keyOrdered.OrderByDescending(i=>i.Value).FirstOrDefault();

        List<string> histogram = new List<string>();

        for (int i = max.Value; i >-1 ; i--)
        {
            histogram.Add(string.Concat(keyOrdered.Select(t => t.Value>i?"| ":"  ")));
        }

        histogram.Add(string.Concat(keyOrdered.Keys.OrderBy(i => i).Select(i => i.ToString() + " ")));

        histogram.ForEach(i => Console.WriteLine(i));

        Console.WriteLine(Environment.NewLine);
        Console.WriteLine("Max: {0}, Count:{1}", max.Key, max.Value);