我有一個結構數組。我的結構的結構是這樣的:對c中多個元素的結構數組排序#
[StructLayout(LayoutKind.Sequential)]
public struct TOCRRESULTSHEADER
{
public int StructId;
public int XPixelsPerInch;
public int YPixelsPerInch;
public int NumItems;
public float MeanConfidence;
}
[StructLayout(LayoutKind.Sequential)]
public struct TOCRRESULTSITEM
{
public short StructId;
public short OCRCha;
public float Confidence;
public short X;
public short Y;
public short Width;
public short Height;
}
[StructLayout(LayoutKind.Sequential)]
public struct TOCRRESULTS
{
public TOCRRESULTSHEADER Hdr;
public TOCRRESULTSITEM[] Item;
}
我填充型TOCRRESULTS像這樣的結構:
TOCRRESULTS MyArray = GetOCRForImage(filename);
我排序由Y值數組就好使用此:
Array.Sort<TOCRRESULTSITEM>(MyArray.Item, (a,b) => a.Y.CompareTo(b.Y));
有沒有一種方法可以按Y和X排序,而無需編寫自己的排序程序?
我嘗試使用LINQ:
var newarray = OCRLetterArray.Item.OrderBy(x => x.Y).ThenBy(x => x.X).ToArray();
但它從來沒有整理我的數組。
對於原來發布的劇烈變化,我表示歉意。我希望能用一個簡單的例子逃脫。
您的LINQ示例,如此處所寫,不會執行任何操作_by design_。 –
編輯我的答案,應該在你的情況下工作。 – Asik
是的。我將其標記爲答案。謝謝! – Richard