Hallo!
Eine eher unperformante Lösung dürfte sowas hier sein (ich hab's in Delphi Prism geschrieben, aber die Umsetzung in C# sollte nicht so schwer sein):
Delphi-Prism-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var citiesBak := new List<String>(cities); cities.Sort(method(x, y : String) : Integer; begin if x = y then exit 0;
if bigcities.Contains(x) and (not bigcities.Contains(y)) then exit -1;
if bigcities.Contains(y) and (not bigcities.Contains(x)) then exit 1;
if not (bigcities.Contains(x) or bigcities.Contains(y)) then exit iif(citiesBak.IndexOf(x) > citiesBak.IndexOf(y), 1, -1);
exit iif(bigcities.IndexOf(x) > bigcities.IndexOf(y), 1, -1); end); |
Zwei "Übersetzungshilfen":
(1) Der Parameter, den ich der Sort-Methode übergebe, ist eine anonyme Methode. Wenn Du damit man Google fütterst, solltest Du schnell finden, wie man das in C# macht
(2) "iif" ist sowas wie der ternäre Operator in C#.
iif(a > b, 1, 2) wäre in C# also
a > b ? 1 : 2
Grüße
Christian
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".