Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq - Fatal编程技术网

C# 如何选择外观最多的字典值

C# 如何选择外观最多的字典值,c#,linq,C#,Linq,给了我无法从中获取值的结果 谢谢你已经成功了。现在已经有了这些组,您可以使用中的MaxBy方法来标识具有最高计数的值 d.GroupBy(t => t.Value) 这篇文章提供了一些关于您如何实现这一目标的见解(请确保承认版权/许可)。您已经完成了一部分。现在已经有了这些组,您可以使用中的MaxBy方法来标识具有最高计数的值 d.GroupBy(t => t.Value) 提供了一些您自己如何实现这一点的见解(确保承认版权/许可) 请注意,您的对象需要覆盖Equals和Ge

给了我无法从中获取值的结果


谢谢

你已经成功了。现在已经有了这些组,您可以使用中的
MaxBy
方法来标识具有最高计数的值

d.GroupBy(t => t.Value) 

这篇文章提供了一些关于您如何实现这一目标的见解(请确保承认版权/许可)。

您已经完成了一部分。现在已经有了这些组,您可以使用中的
MaxBy
方法来标识具有最高计数的值

d.GroupBy(t => t.Value) 
提供了一些您自己如何实现这一点的见解(确保承认版权/许可)

请注意,您的对象需要覆盖
Equals
GetHashCode
或实现


请注意,您的对象需要覆盖
Equals
GetHashCode
或实现。

或者,如果您真的只关心哪一个发生得最多(而不关心它们有哪些键),只需忽略它是一个
字典
,只对
列表执行操作即可

objecty maxOccurenceValue = d.GroupBy(kv => kv.Value)
                     .OrderByDescending(g => g.Count())
                     .First().Key;
Dictionary dict=新字典
{
{“嗨”,3},
{“那里”,3},
{“你”,4},
{“have”,5},
{“a”,5},
{“不错”,5},
{“帽子”,5},
{“and”,6},
{“鞋”,6},
};
var结果=dict
.选择(d=>d.Value)
.GroupBy(k=>k)
.OrderByDescending(k=>k.Count())
.First()
钥匙
控制台写入线(结果);
// 5

编辑:我喜欢不使用第二个变换。谢谢,蒂姆。更改了我的,删除了对他帖子中不再出现的内容的引用。

或者,如果你真的只关心哪一个发生得最多(而不是他们有哪些键),只需忽略它是一本
字典,只对
值的列表进行操作

objecty maxOccurenceValue = d.GroupBy(kv => kv.Value)
                     .OrderByDescending(g => g.Count())
                     .First().Key;
Dictionary<string, int> dict = new Dictionary<string, int>
{
    {"hi", 3},
    {"there", 3},
    {"you", 4},
    {"have", 5},
    {"a", 5},
    {"nice", 5},
    {"hat", 5},
    {"and", 6}, 
    {"shoes", 6},
};

var result = dict
    .Select(d => d.Value)
    .GroupBy(k => k)
    .OrderByDescending(k => k.Count())
    .First()
    .Key;

Console.WriteLine(result);

// 5
Dictionary dict=新字典
{
{“嗨”,3},
{“那里”,3},
{“你”,4},
{“have”,5},
{“a”,5},
{“不错”,5},
{“帽子”,5},
{“and”,6},
{“鞋”,6},
};
var结果=dict
.选择(d=>d.Value)
.GroupBy(k=>k)
.OrderByDescending(k=>k.Count())
.First()
钥匙
控制台写入线(结果);
// 5
编辑:我喜欢不使用第二个变换。谢谢,蒂姆。更改了我的,删除了对他帖子中不再出现的内容的引用。

List orders=new List
Dictionary<string, int> dict = new Dictionary<string, int>
{
    {"hi", 3},
    {"there", 3},
    {"you", 4},
    {"have", 5},
    {"a", 5},
    {"nice", 5},
    {"hat", 5},
    {"and", 6}, 
    {"shoes", 6},
};

var result = dict
    .Select(d => d.Value)
    .GroupBy(k => k)
    .OrderByDescending(k => k.Count())
    .First()
    .Key;

Console.WriteLine(result);

// 5
{new Order(){State=“cali”,ID=1}, 新订单(){State=“cali”,ID=2}, 新订单(){State=“nali”,ID=3}, 新订单(){State=“pali”,ID=4}, 新订单(){State=“pali”,ID=5}, 新订单(){State=“cali”,ID=3}, }; List gr=null; orders.GroupBy(g=>g.State).ToList().ForEach(d=> { 如果(gr==null) gr=d.ToList(); 否则如果(gr.Count()
是的,您可以使用OrderBy来完成,但是如果列表中有很多元素,我认为OrderBy是一个很重的扩展函数。我希望这会有所帮助。

List orders=new List
{new Order(){State=“cali”,ID=1},
新订单(){State=“cali”,ID=2},
新订单(){State=“nali”,ID=3},
新订单(){State=“pali”,ID=4},
新订单(){State=“pali”,ID=5},
新订单(){State=“cali”,ID=3},
};
List gr=null;
orders.GroupBy(g=>g.State).ToList().ForEach(d=>
{
如果(gr==null)
gr=d.ToList();
否则如果(gr.Count()

是的,您可以使用OrderBy来实现,但是如果列表中有许多元素,我认为OrderBy是一个很重的扩展函数。我希望这会有所帮助。

有没有其他库可以实现这一点?是的,您可以自己编写方法。我会避免使用OrderBy方法,因为它会迭代您的序列超过必要的次数。有没有一种方法可以在没有其他库的情况下实现这一点?是的,您可以自己编写该方法。我会避免使用OrderBy方法,因为它会迭代您的序列超过必要的次数。MaxOccurrenceValue.Group没有键或值,它本身就是集合。这是可行的,但应该注意OrderByDescending意味着整个序列的迭代时间超出了必要的时间。@eugeneK,一个组有一个
,代表一组值。@eugeneK:Simplied my answer.maxOccurenceValue.Group没有键或值,它本身就是一个集合。这是可行的,但应该注意OrderByDescending意味着整个序列的迭代时间超出了必要的时间。@eugeneK,一个组有一个
,代表一组值。@eugeneK:简化了我的答案。