你怎么在数组A中找到它们的mod是数组B的值

use*_*550 1 c# linq

我需要最快的方法来找到数组A中的值,当它除以4时,它们的mod是数组B:

A = {4,5,6,7,8,9,10}

B={2,3}

result={6,7,10}
Run Code Online (Sandbox Code Playgroud)

矿:

  foreach (int b in B)
       {
        S=  A.Where(n => n % 4 == b).ToArray();

        foreach (int s in S)
        {
            newlist.Add(s); 

        }
       }
   newlist.Distinct().ToArray();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

为什么不:

var query = A.Where(a => B.Contains(a % 4))
             .ToArray();
Run Code Online (Sandbox Code Playgroud)

如果B可能很大,你可以创建一个HashSet<int>代替,但如果它真的是mod 4,那就没有意义了.

另外,假设你知道,在每一个元素A,并B为正(并且B没有任何愚蠢的值,比如5),可以映射Bbool[4]和使用& 3,而不是% 4:

var truth = new bool[4];
foreach (var b in B)
{
    truth[b] = true;
}
var query = A.Where(a => truth[a & 3]).ToArray();
Run Code Online (Sandbox Code Playgroud)