我需要最快的方法来找到数组A中的值,当它除以4时,它们的mod是数组B:
A = {4,5,6,7,8,9,10}
B={2,3}
result={6,7,10}
矿:
foreach (int b in B)
{
S= A.Where(n => n % 4 == b).ToArray();
foreach (int s in S)
{
newlist.Add(s);
}
}
newlist.Distinct().ToArray();
答案 0 :(得分:8)
为什么不:
var query = A.Where(a => B.Contains(a % 4))
.ToArray();
如果B
可能很大,则可以创建一个HashSet<int>
,但如果它的真的将是mod 4,则没有意义。
或者,假设您知道A
和B
中的每个元素都是正数(并且B
没有任何愚蠢的值,例如5),您可以映射{{ 1}}到B
并使用bool[4]
代替& 3
:
% 4
答案 1 :(得分:1)
一点代码审查:
foreach (int b in B)
{
S= A.Where(n => n % 4 == b).ToArray();
foreach (int s in S)
{
newlist.Add(s);
}
}
newlist.Distinct().ToArray();
你不需要Where(...)中的ToArray()。ToArray()。
foreach循环可以用AddRange()
foreach (int b in B)
{
var S = A.Where(n => n % 4 == b);
newlist.AddRange(S);
}
var result = newlist.Distinct().ToList();
尝试使用更少的数组。 List<T>
和IEnumerable<T>
更有用。