对数组C#进行排序

本文关键字:排序 数组 | 更新日期: 2023-09-27 18:26:40

我有一个DICOM图像列表,希望按Z顺序排序(这是图像中的一个属性)

这是我将图像添加到列表的代码

  private List<DicomImage> img = new List<DicomImage>();
   for (int i = 0; i < imagenes.Count; i++) //imagenes is a variable that holds the number of images (coming from an OpenFileDialog)
         {
            img.Add(new DicomImage(imagenes[i]));
          }

现在,我如何按Z升序排序?

假设Z属性只需输入以下内容即可访问:

int Z=img[i].Z;

对数组C#进行排序

假设imagenes是某种IEnumerable<T>,我会使用LINQ来完成整个任务:

var dicomImages = imagenes.Select(original => new DicomImage(original))
                          .OrderBy(image => image.Z)
                          .ToList();

如果img是List<T>,则可以使用Sort(Comparison<T>)方法。

img.Sort((img1, img2) => img1.Z.CompareTo(img2.Z));

这只是告诉排序方法,当比较两个图像时,调用该函数,该函数将返回到比较它们的Z值以获得结果。

基于对John skeets答案的评论,这里有一个更高性能的变体,可以节省通过复制图像的时间

var dicomImages = ofdmulti.FileNames.Select(filename => new DicomImage(filename))
                                    .OrderBy(image => image.Z);
foreach (var image in dicomImages)
{
    // Do Something usefull
}