在C#中努力理解LINQ

时间:2016-09-12 03:17:14

标签: c# linq

以下是我在C#中使用的代码。我理解它正在为我的数据集找到模式,但我感到困惑的是GroupBy(value => value)以及=>究竟是什么,因为我可以将值更改为任何内容并且它仍然有效。我希望能够使用LINQ,就这些参数而言,我只需要更深入的了解。

static double Mode()
{
  double mode = valueArray.GroupBy(value => value)
        .OrderByDescending(value => value.Count())
        .First()
        .Key;
  return mode;
}

1 个答案:

答案 0 :(得分:0)

让我们剖析Yes的不同部分。这里每个调用的结果/输出充当下一个处理数据的调用的输入

  1. Linq Query
  2. valueArray.GroupBy(value => value)这里有与Sql相同的用法,它导致格式GroupBy的结果,IEnumerable<IGrouping<Key,Value>>是一个粘合剂,它为集合中的每个元素提供{ {1}}进行处理。只有奇怪的部分是你将整个对象作为lambda =>,因此在这种情况下结果将是valueArray。如果它是Key,则覆盖object as key and valuecustom class / reference type and not primitive type方法以进行正确的操作,否则它将对对象进行参考比较。您的案例密钥似乎是Equals,这很好

    1. GetHashcode
    2. 这应该很简单,对double - primitive type OrderByDescending(value => value.Count()) Count IGrouping elements,并按Grouping顺序排列。结果为descending,由分组元素IOrderedEnumerable<IGrouping<Key,Value>>

      排列
      1. Count
      2. 以最大计数值取First()个元素,即只选择一个First

        1. IGrouping<Key,Value>
        2. 获取Key元素的键,然后返回First

相关问题