【问题标题】:C# OrderByDescendingC# OrderByDescending
【发布时间】:2011-09-16 10:26:28
【问题描述】:

OrderByDescending 是如何使用的?

我有一个标签,Circles,声明如下

ReadOnlyCollection<FlangeCircle> Circles

其中包含一个变量,双精度类型的直径

我想根据直径对它们进行排序,所以我尝试

FlangeCircle<FlangeCircle> query = Circles.OrderByDescending(p => p.Diameter);

但这不会通过编译器,但以下内容会

var query = Circles.OrderByDescending(p => p.Diameter);

为什么会这样?如何使用“正确”类型声明查询?

/斯蒂芬

【问题讨论】:

  • 我想类型应该是IEnumerable&lt;FlangeCircle&gt; 而不是FlangeCircle&lt;FlangeCirle&gt; 编辑: 实际上只是记得它可能是IOrderedEnumerable&lt;FlangeCircle&gt;
  • 您也可以将鼠标悬停在 var 关键字上(如果您使用 Visual Studio),它应该会告诉您编译器将分配给它的类型
  • @Manatherin:您可能想将此作为答案发布;)
  • @fjdumont,meh jon skeets 已经做到了:P

标签: c# wpf arrays collections


【解决方案1】:

变量的类型是问题:

FlangeCircle<FlangeCircle> query = ...

FlangeCircle&lt;FlangeCircle&gt; 作为一种类型没有意义,当然也不是OrderByDescending 返回的内容。你几乎肯定想要:

IEnumerable<FlangeCircle> query = Circles.OrderByDescending(p => p.Diameter);

或者,如果您希望能够在 query 上执行 ThenBy/ThenByDescending 操作:

IOrderedEnumerable<FlangeCircle> query = ...;

【讨论】:

    【解决方案2】:

    这将返回一个 IEnumerable,所以:

    IEnumerable<FlangeCircle> query = Circles.OrderByDescending(p => p.Diameter);
    

    【讨论】:

      【解决方案3】:

      变量不应该是 IEnumerable 吗?如

      IEnumerable<FlangeCircle> query = Circles.OrderByDescending(p => p.Diameter);
      

      【讨论】:

        【解决方案4】:

        尝试使用IEnumerable&lt;FlangeCircle&gt; query = ...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-02-12
          • 1970-01-01
          • 2012-05-04
          • 1970-01-01
          • 2011-03-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多