以下是我在C#中使用的代码。我理解它正在为我的数据集找到模式,但我感到困惑的是GroupBy(value => value)
以及=>
究竟是什么,因为我可以将值更改为任何内容并且它仍然有效。我希望能够使用LINQ,就这些参数而言,我只需要更深入的了解。
static double Mode()
{
double mode = valueArray.GroupBy(value => value)
.OrderByDescending(value => value.Count())
.First()
.Key;
return mode;
}
答案 0 :(得分:0)
让我们剖析Yes
的不同部分。这里每个调用的结果/输出充当下一个处理数据的调用的输入
Linq Query
valueArray.GroupBy(value => value)
这里有与Sql相同的用法,它导致格式GroupBy
的结果,IEnumerable<IGrouping<Key,Value>>
是一个粘合剂,它为集合中的每个元素提供{ {1}}进行处理。只有奇怪的部分是你将整个对象作为lambda =>
,因此在这种情况下结果将是valueArray
。如果它是Key
,则覆盖object as key and value
和custom class / reference type and not primitive type
方法以进行正确的操作,否则它将对对象进行参考比较。您的案例密钥似乎是Equals
,这很好
GetHashcode
这应该很简单,对double - primitive type
OrderByDescending(value => value.Count())
Count
IGrouping elements
,并按Grouping
顺序排列。结果为descending
,由分组元素IOrderedEnumerable<IGrouping<Key,Value>>
Count
以最大计数值取First()
个元素,即只选择一个First
IGrouping<Key,Value>
获取Key
元素的键,然后返回First