using System.Collections.Generic;
public static void Main()
List<string> X = new List<string>{ "a", "b", "c", "d", "e", "f", "g", "h", "i"};
List<float> Y = new List<float> { 0.991f, 1.471f, 3.819f, 0.003f, 2.291f, 2.887f, 2.887f, 0, 1.0f};
.Select((value, index) => new { Index = index, Value = value })
.OrderBy(o => Y[o.Index])
Console.WriteLine(string.Join(", ", sorted));