Since you are using arrays, most of the use of linq, will create a new instance of some kind of IEnumerable, for example, ToList or ToArray.
Thus I'd suggest that to use Array.Sort with Comparison:
string[] listOne=new string[] { "dog", "cat", "car", "apple" };
string[] listTwo=new string[] { "car", "apple" };
Comparison<String> comparison=
(x, y) => {
if(!listTwo.Contains(x)||!listTwo.Contains(y))
return 0;
else {
var indexOfX=Array.IndexOf(listTwo, x);
var indexOfY=Array.IndexOf(listTwo, y);
return indexOfX.CompareTo(indexOfY);
}
};
Array.Sort(listOne, comparison);
It would be sorted with quick sort algorithm internally, it's an in-place algorithm.