想象一下,我们有两个字符串数组(命名为A和B),包含1000个单元格。 A包含1000个单词,但B为空。
现在我想将A的每个元素复制到B,但A和B中元素的索引之间不应该存在任何关系或序列,至少可以识别。
在结束时,数组A将被清零所以我必须使用数组B,但我想得到一个元素的实际索引(元素在数组A中的索引)。
你能提出任何方法来解决这个问题吗? (使用键或方程生成索引会很好)
答案 0 :(得分:2)
您可以为源数组中的每个元素生成一个随机数,并按此排序:
var r = new Random();
var B = A.OrderBy(x => r.Next(0, A.Length + 1)).ToArray();
这可能会产生相同的数字,但是从你的问题开始,只要你的输入数组与输入数组A
不同,就会产生很多不足。
如果您还需要A
中元素的原始索引,请使用同时使用当前元素索引的overload for Select
:
var B = A.Select((x, i) => new { Index = i, Value = x })
.OrderBy(x => r.Next(0, A.Length + 1)).ToArray();
现在,您的B
- 是一个匿名类型的数组,其中包含Index
- 和Value
- 属性。