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:简化了我的答案。