Я не могу это проверить, но что-то подобное может сработать. Код определенно можно оптимизировать / очистить, но теоретически это может сработать:)
Единственный вопрос заключается в том, будет ли содержимое в сопоставимом делегате переводиться так же, как в разделе Где. Таким образом, вам может понадобиться использовать IndexOf или аналогичный (как реализовано в Oybek)
var queryResult =
people
.Where(person=>person.name.Contains(@"/something/"))
.OrderBy(person=>person.Name,
delegate(string name1, string name2)
{
int result1, result2;
if(name1.Contains(@"something/")) result1 = 1;
else if(name1.Contains(@"/something/")) result1 = 2;
else result1 = 3;
if(name2.Contains(@"something/")) result2 = 1;
else if(name2.Contains(@"/something/")) result2 = 2;
else result2 = 3;
return result1.CompareTo(result2);
})