Как сделать функцию сравнения в C#

Скажем, у меня есть элементы (X, Y и Z) в списке, у меня есть функция, которая генерирует процент, насколько два объекта похожи друг на друга.

Что я хочу сделать, так это сравнить X с Y и Z, используя функцию compareElements, так:

compareElements(X,Y); // equals 55
compareElements(X,Z); // equals 60

Затем Y с X и Z

compareElements(Y,X); // equals 55
compareElements(Y,Z); // equals 62

Затем Z с Y и X

compareElements(Z,X); // equals 60
compareElements(Z,Y); // equals 62

Затем я возвращаю наибольшее значение, которое равно 62.

Очевидно, что здесь есть некоторые повторения, мне они не нужны, но я не уверен, как их устранить.

Как мне структурировать мой LINQ-запрос или функцию/алгоритм, чтобы сделать это сравнение для каждого элемента без повторений?

Я бы предпочел использовать LINQ, если это возможно, поскольку мне передается перечисляемый список, а функция возвращается до того, как список действительно перечисляется, поэтому мы можем сэкономить на стоимости выполнения сравнения, пока список не будет перечислен.

Все, что мне нужно, это наибольшее значение функции сравнения, 62.

Примечание: Мой фактический набор результатов, с которым я работаю, в среднем составляет от 3 до 10 элементов в списке, которые нужно прогнать через эту функцию сравнения.

5
задан Brian Deragon 19 December 2011 в 21:24
поделиться