0

我有一个 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;

4

3 回答 3

5

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

var dicomImages = imagenes.Select(original => new DicomImage(original))
                          .OrderBy(image => image.Z)
                          .ToList();
于 2013-08-05T17:45:04.080 回答
0

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

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

foreach (var image in dicomImages)
{
    // Do Something usefull
}
于 2013-08-06T06:01:45.053 回答
0

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

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

这只是告诉 sort 方法,当比较两个图像时,调用这个函数,它只是恢复比较它们的 Z 值以获得结果。

于 2013-08-05T18:02:40.837 回答