Clasificación personalizada con LINQ

Parece que me falta algo trivial.

De todos modos, aquí va:

var order = new[]{1,3,2};
var foos = new[]{new Foo{Id=1}, new Foo{Id=2}, new Foo{Id=3}};

¿Cómo ordenar foos por orden array usando Linq?

Resultado deseado:

foos == new[]{new Foo{Id=1}, new Foo{Id=3}, new Foo{Id=2}};

Editar:
La orden contiene ids de Foo. Lamento no haber mencionado eso. A veces es incluso más difícil hacer una pregunta correctamente que responderla. :)

Respuestas a la pregunta(6)

Su respuesta a la pregunta