【问题标题】:order array descending in c # with lambda [duplicate]在c#中使用lambda降序排列数组
【发布时间】:2019-03-10 22:37:40
【问题描述】:

我想通过其中一个变量“n_common”来排序对象数组,这给了我错误:

你不能在类型数组中转换 Lambda 表达式,因为不是 类型委托。

cartesian_product.Sort((a, b) => -1 * a.n_common.CompareTo(b.n_common));

我想对包含 3 个变量“p”、“q”和“n_common”的“Pair”对象进行降序排序,它应该按“n_common”排序,cartesian_product 是 Pair 对象的数组。

我不是只使用 Lambda 表达式来使用 Linq,或者至少我是这样理解的

【问题讨论】:

  • 不,因为我不是只使用 Lambda 表达式来使用 Linq,或者至少我是这样理解的
  • cartisian_product 的类型是什么?你希望你的 lambda 做什么。我相信 Sort 期望一个委托,它接受集合正在收集的类型的实例并返回一个可以排序的值。像people.Sort(p => p.Age) 这样的东西会接受一个人的集合(在一个变量 people 中并按年龄对他们进行排序。在你的情况下,委托指定一个接受两个参数的函数)。

标签: c#


【解决方案1】:

Sort 是一个静态方法,所以它必须从类Array 而不是实例中调用。试试这个:

Array.Sort(cartesian_product, (a, b) => -1 * a.n_common.CompareTo(b.n_common));

【讨论】:

    【解决方案2】:

    在班级顶部添加using System.Linq;using System.Data.Entity;

    【讨论】:

    • 不,因为我不是只使用 Lambda 表达式来使用 Linq,或者至少我是这样理解的
    • 采用 lambda 表达式的各种扩展方法(例如 Sort)在 System.Linq 中定义。你可能不认为你在使用 LINQ,但你确实在使用。
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-01
    • 2018-03-24
    • 1970-01-01
    相关资源
    最近更新 更多