Contrapartida a implementaciones de interfaces anónimas en C #

Estoy trabajando para traducir algún código de Java a C #, pero tengo algunos problemas, ¿quizás alguien pueda ayudar?

Tengo problemas al intentar replicar implementaciones de interfaces anónimas que se usan ampliamente en Java, pero no tengo idea de cómo hacerlo.

Un ejemplo es:

List<DATA> queue1 = new ArrayList<DATA>(dataSet);
            // Sort by distance to the first promoted data
            Collections.sort(queue1, new Comparator<DATA>() {
                @Override
                public int compare(DATA data1, DATA data2) {
                    double distance1 = distanceFunction.calculate(data1, promoted.first);
                    double distance2 = distanceFunction.calculate(data2, promoted.first);
                    return Double.compare(distance1, distance2);
                }
            });

Respuestas a la pregunta(5)

Su respuesta a la pregunta