C# 避免使用linq创建新对象

C# 避免使用linq创建新对象,c#,linq,C#,Linq,我对linq语法不是很熟悉,我不确定这个查询是否完全符合我想要实现的目标,但它工作得很好。 我怎样才能使它更好,是否有可能避免使用新元组或新对象 byte[] ShuffledBytes= new byte[20]; byte[] Indecies = new byte[20]; //holds the right index for each byte in Bytes var orderdBytes = Indecies.

我对linq语法不是很熟悉,我不确定这个查询是否完全符合我想要实现的目标,但它工作得很好。 我怎样才能使它更好,是否有可能避免使用新元组或新对象

byte[] ShuffledBytes= new byte[20];
byte[] Indecies = new byte[20]; //holds the right index for each byte in Bytes

    var orderdBytes = 
                    Indecies.
                    Zip(ShuffledBytes, (i, b) => new Tuple<byte,byte>(b,i)).
                    OrderBy(o => o.Item2).
                    Select(o => o.Item1).
                    ToArray();
byte[]ShuffledBytes=新字节[20];
字节[]索引=新字节[20]//保存字节中每个字节的正确索引
var orderdBytes=
不雅。
Zip(ShuffledBytes,(i,b)=>新元组(b,i))。
OrderBy(o=>o.Item2)。
选择(o=>o.Item1)。
ToArray();

我想你想要的是
数组。排序
而不是LINQ。其中一个重载使用一个数组作为键,另一个数组作为要排序的项:

Array.Sort(Indecies, ShuffledBytes);
不需要额外的对象,根据索引中的值对ShuffledBytes进行排序


另一种选择是使用排序字典或keyvaluepair的列表,而不是2个数组。

我想你想要的是
数组。排序
而不是LINQ。其中一个重载使用一个数组作为键,另一个数组作为要排序的项:

Array.Sort(Indecies, ShuffledBytes);
不需要额外的对象,根据索引中的值对ShuffledBytes进行排序


另一种选择是使用排序字典或keyvaluepair的列表,而不是2个数组。

如果您不想将结果转换为某种对象的列表,您希望linq语句做什么?@MichaC我只是创建了一个用于排序的对象,最终我只需要一个字节[],我还想知道是否有人也会这样做如果你不想将结果转换成某种对象的列表,你希望linq语句做什么?@MichaC我只是创建一个对象只是为了排序,最终我只需要一个字节[],我还想知道是否有人会用同样的方法做呢哇,太完美了!哇,太完美了!