对数组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;
假设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
}