C# 在C.NET中订购一个数组

C# 在C.NET中订购一个数组,c#,list,C#,List,我有一个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 OpenFile

我有一个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属性:

intz=img[i].Z

假设imagenes是某种IEnumerable,我会使用LINQ来处理整个问题:

var dicomImages = imagenes.Select(original => new DicomImage(original))
                          .OrderBy(image => image.Z)
                          .ToList();
假设imagenes是某种IEnumerable,我会使用LINQ来处理整个问题:

var dicomImages = imagenes.Select(original => new DicomImage(original))
                          .OrderBy(image => image.Z)
                          .ToList();
如果img是一个列表,则可以使用该方法

这只是告诉排序方法,在比较两个图像时,调用此函数,该函数将恢复为比较结果的Z值。

如果img是一个列表,则可以使用此方法


这只是告诉排序方法,在比较两个图像时,调用此函数,该函数将恢复为比较它们的Z值以获得结果。

基于John skeets答案的注释,这里有一个性能更高的变体,它可以节省复制图像的时间

var dicomImages = ofdmulti.FileNames.Select(filename => new DicomImage(filename))
                                    .OrderBy(image => image.Z);

foreach (var image in dicomImages)
{
    // Do Something usefull
}

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

var dicomImages = ofdmulti.FileNames.Select(filename => new DicomImage(filename))
                                    .OrderBy(image => image.Z);

foreach (var image in dicomImages)
{
    // Do Something usefull
}

你现有的代码对我来说很奇怪-你确定你不是说我