It seems that i\'m missing something trivial.
Anyway, here it goes:
var order = new[]{1,3,2}; var foos = new[]{new Foo{Id=1}, new Foo{Id=2}, new Fo
from o in order.Select((o, i) => new { o, i }) join f in foos on o.o equals f.Id orderby o.i select f;