Re: linq on two string array
I don't know of a quick way to do it with Linq (probably because I don't use Linq terribly often, perhaps another member will know).
You can do it normally though, if you have a way to quickly test membership in both lists.
For short lists, it is probably sufficient to implement isMember as a loop. If you had longer lists, you'd probably want to construct a dictionary for each list:
List<string> orderedResult = new List<string>();
for(int i = 0; i < listTwo.Length; i++)
if( isMember(listTwo[i], listOne) ) //If the i'th item in list2 is contained in list1
for(int i = 0; i < listOne.Length; i++)
if( !isMember(listOne[i], listTwo) ) //If the i'th item in list1 is NOT contained in list2
And then test for membership:
Dictionary<string, int> listOneDict = new Dictionary<string, int>();
foreach(string s in listOne)
All of these snippets assume that listOne and listTwo have no repeated elements.
Anyway, I think that ought to work, but I didn't explicitly test it. Push back if you need more information. Hope that is a little helpful!