C# 结构体数组内指定字段的升序、降序排列

发布于:2024-05-14 ⋅ 阅读:(139) ⋅ 点赞:(0)

目录

实现目标

结构体定义

升序排列

方法一:使用Array.Sort配合自定义比较器

方法二:使用LINQ的OrderBy

降序排列

方法一:使用Array.Sort配合自定义比较器

方法二:使用LINQ的OrderBy


 

实现目标

要对结构体数组按照其成员字段的值进行排序,使用C#的内置排序方法或LINQ查询。

 

结构体定义

public struct ST_LungDisDetInfo
{ 
    public int nID;
    public float fScore; 
};

 

升序排列

方法一:使用Array.Sort配合自定义比较器

using System;

public class ST_LungDisDetInfoComparer : IComparer<ST_LungDisDetInfo>
{
    public int Compare(ST_LungDisDetInfo x, ST_LungDisDetInfo y)
    {
        return Comparer<float>.Default.Compare(x.fScore, y.fScore);
    }
}

// 使用示例
ST_LungDisDetInfo[] lungDisDetInfos = ...; // 假设这是您的结构体数组

Array.Sort(lungDisDetInfos, new ST_LungDisDetInfoComparer());

// 现在,lungDisDetInfos已经按照fScore字段升序排序

方法二:使用LINQ的OrderBy

using System.Linq;

// 使用示例
ST_LungDisDetInfo[] lungDisDetInfos = ...; // 假设这是您的结构体数组

var sortedLungDisDetInfos = lungDisDetInfos.OrderBy(info => info.fScore).ToArray();

// 现在,sortedLungDisDetInfos是一个新的结构体数组,已按照fScore字段升序排序

 

降序排列

方法一:使用Array.Sort配合自定义比较器

using System;

public class ST_LungDisDetInfoDescendingComparer : IComparer<ST_LungDisDetInfo>
{
    public int Compare(ST_LungDisDetInfo x, ST_LungDisDetInfo y)
    {
        return Comparer<float>.Default.Compare(y.fScore, x.fScore); // 注意y和x的顺序
    }
}

// 使用示例
ST_LungDisDetInfo[] lungDisDetInfos = ...; // 假设这是您的结构体数组

Array.Sort(lungDisDetInfos, new ST_LungDisDetInfoDescendingComparer());

// 现在,lungDisDetInfos已经按照fScore字段降序排序

方法二:使用LINQ的OrderBy

using System.Linq;

// 使用示例
ST_LungDisDetInfo[] lungDisDetInfos = ...; // 假设这是您的结构体数组

var sortedLungDisDetInfos = lungDisDetInfos.OrderByDescending(info => info.fScore).ToArray();

// 现在,sortedLungDisDetInfos是一个新的结构体数组,已按照fScore字段降序排序

 

 


网站公告

今日签到

点亮在社区的每一天
去签到