我有一个列表>
List<List<Byte>> bytes = new List<List<Byte>>()
{
new List<Byte> {1, 1, 2, 3, 4}, // index 0 is original
new List<Byte> {0, 0, 2, 4, 1},
new List<Byte> {1, 2, 2, 1, 1},
new List<Byte> {1, 0, 2, 2, 2}
};
和第一个List是原始的。然后我对List进行排序,我必须找到原来的List索引。
bytes:
[0] = {0, 0, 2, 4, 1}
[1] = {1, 0, 2, 2, 2}
[2] = {1, 1, 2, 3, 4} // here is that index
[3] = {1, 2, 2, 1, 1}
一个人建议我首先在未排序的列表上使用引用,然后排序列表并使用ReferenceEqual,但这对我不起作用。我是否通过设置引用做错了什么,或者它在列表上不起作用?我怎样才能得到排序数组中的原始索引呢?注:我正在排序与OrderBy和IComparer。
我是这样做的:
List<byte> reference = new List<byte>(bytes[0]);
我是这样做的:
List<byte> reference = new List<byte>(bytes[0]);
这不是创建引用的正确方式,因为您通过调用List<byte>
的构造函数来创建副本。bytes[0]
的副本不存在于bytes
中,因此您无法通过检查引用相等性来找到它。
你应该这样做:
List<byte> reference = bytes[0];
现在reference
在排序之前引用位于位置0的列表,因此您应该能够通过使用引用相等性找到它的索引。