Ich habe ein ArrayEntfernung zwischen zwei Werten
int[] Values = new int[] { 5, 43, 45, 25, 16, 89, 65, 36, 62 };
und zur Zeit i zwischen allen Werten 84 = 89 - 5
int MaxDistance = Values.SelectMany((a) => Values.Select((b) => Math.Abs(a - b))).Max();
jetzt die maximale Entfernung am Berechnung Ich möchte den Mindestabstand 2 = 45 - 43
berechnen @ ycsun's commment - das funktioniert nicht
int MinDistancee = Values.SelectMany((ia, a) => Values.Select((ib, b) => ib == ia ? int.MaxValue : Math.Abs(a - b))).Min();
Versuchen Sie, 89 und 5 in Ihrem Array zu tauschen, und sehen Sie, ob Max immer noch funktioniert. –
Sie erhalten Null, weil 5 - 5 = 43 - 43 = ... = 0, oder? – ycsun
Ihre Bearbeitung funktioniert nicht, weil die Überladung für 'SelectMany', die den Index enthält, das zweite Argument ist, und nicht das erste, also würden Sie stattdessen' (a, ia) 'und' (b, ib) 'wollen. – juharr