Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating resource.

Please try to avoid dependencies to third-party libraries and frameworks.

Implementation edit is for fixing errors and enhancing with metadata.

Instead of changing the code of the snippet, consider creating another C# implementation.

Other implementations
seta := make(map[T]bool, len(a))
for _, x := range a {
	seta[x] = true
setb := make(map[T]bool, len(a))
for _, y := range b {
	setb[y] = true

var c []T
for x := range seta {
	if setb[x] {
		c = append(c, x)
c = a & b
for elem in a do
  if (b.indexof(elem) >= 0) and (c.indexof(elem) = -1) then
c = list(set(a) & set(b))
use std::collections::HashSet;
let unique_a = a.iter().collect::<HashSet<_>>();
let unique_b = b.iter().collect::<HashSet<_>>();

let c = unique_a.intersection(&unique_b).collect<Vec<_>>();
import Data.List (intersect)
a `intersect` b
c = list(set(a).intersection(b))
use std::collections::HashSet;
let set_a: HashSet<_> = a.into_iter().collect();
let set_b: HashSet<_> = b.into_iter().collect();
let c = set_a.intersection(&set_b);
const c = [ Set(a)].filter(e => b.includes(e));