もちろん、リストはまったく変更されません。LINQ は基になるコレクションを変更せず、クエリを作成するだけです。
あなたが求めているのは、クエリ結果を新しいリストに保存することです:
boardObjectList = boardObjectList.OrderBy(p => (p.Split())[0]).ThenBy(p=> (p.Split())[1]).ToList();
編集:別の外観を持っていました。そのような文字列を比較するべきではありません。これらの「数字」のいずれかが「9」より大きい場合はどうなりますか? 更新されたソリューションは次のとおりです。
boardObjectList = boardObjectList.Select(p => new { P = p, Split = p.Split() } ).
OrderBy(x => int.Parse(x.Split[0])).ThenBy(x => int.Parse(x.Split[1])).
Select(x => x.P).ToList();
EDIT2: LINQ を使用せずにメモリ オーバーヘッドを減らすこともできます。
boardObjectList.Sort((a, b) =>
{
// split a and b
var aSplit = a.Split();
var bSplit = b.Split();
// see if there's a difference in first coordinate
int diff = int.Parse(aSplit[0]) - int.Parse(bSplit[0]);
if (diff == 0)
{
// if there isn't, return difference in the second
return int.Parse(aSplit[1]) - int.Parse(bSplit[1]);
}
// positive if a.x>b.x, negative if a.x<b.x - exactly what sort expects
return diff;
});