0

请告诉我如何解决问题。

我必须序列(numbersA 和 numbersB)。在输出中,我只需要第二个序列(numbersB)中可用的元素。

int[] numbersA = { 0, 2, 4, 4, 6, 8, 9 }; int[] numbersB = { 2, 4 };

数字A - 数字B = 2, 4 ,4

except() 或 Intersect() 不起作用。

4

2 回答 2

1

听起来你想要这样的东西:

var result = numbersA.Where(x => numbersB.Contains(x));

如果它非常小也没关系numbersB,但是随着它变大,您可能希望更改为:

var numbersBSet = new HashSet<int>(numbersB);
var result = numbersA.Where(x => numbersBSet.Contains(x));
于 2013-04-18T20:57:17.057 回答
0

从第二个列表创建一个 HashSet 以便查找速度快,然后执行以下操作:

int[] numbersA = { 0, 2, 4, 4, 6, 8, 9 }; 
int[] numbersB = { 2, 4 };
var set = new HashSet<int>(numbersB);
var finalList = numbersA.Where(n => set.Contains(n));
于 2013-04-18T20:58:15.277 回答