使用 LINQ 在 C# 中按升序和降序排列数组

问题描述 投票:0回答:1

在此我编写了两个 linq 查询

  1. 升序排列
  2. 对于降序排列

我已经用一种方法做到了这一点,如果存在的话,你们可以建议我另一种获取知识的方法吗?

这是代码

// Specify the data source.
int [] scores = [79,92,98,2];

// Define the query expression for ascending order.
IEnumerable<int> scoreQuery = from score in scores orderby score ascending select score;

// Define the query expression for descending order.
var scoreQueryDesc = from score in scores orderby score descending select score;

// Execute the ascending query 
foreach (var i in scoreQuery)
{
        Console.Write(i + " ");
}

// This Console is for Next line.
Console.WriteLine();

// Execute the descending query 
foreach (var i in scoreQueryDesc)
{
        Console.Write(i + " ");
}

在上面的代码中我定义了两种类型的值

  • IE可枚举分数查询
  • var 分数查询描述

请建议我还有其他方法可以做到这一点

c# asp.net .net linq
1个回答
0
投票

如果您想有条件地升序或降序排序,您可以使用此扩展:

public static IOrderedEnumerable<TSource> OrderByWithDirection<TSource, TKey>(
    this IEnumerable<TSource> sequence,
    Func<TSource, TKey> keySelector,
    bool descending)
{
    return descending
        ? sequence.OrderByDescending(keySelector)
        : sequence.OrderBy(keySelector);
}

那么你的代码就变得简单了:

bool descending = true; // can be set at runtime
IEnumerable<int> scoreQuery = scores.OrderByWithDirection(i => i, descending);
© www.soinside.com 2019 - 2024. All rights reserved.