Something like the following:
Map[Sort[#] &, list]
(*{{{a, 1}, {b, 3}, {c, 5}}, {{a, 5}, {b, 1}, {c, 3}}, {{a, 5}, {b, 3}, {c, 1}}, {{a, 1}, {b, 5}, {c, 3}}}*)
A first approximation:
MyOrderList[list_List, order_?(Positive[#] && Element[#, Integers] &)] :=
Block[{slist, perm, mylist},
slist := Map[Sort, list];
perm = Mean[Map[Composition[Length, Permutations[#] &], slist]];
mylist :=
Table[Table[Extract[Select[Tuples[slist[[i]], Length[slist[[i]]]],
ContainsAll[#, slist[[i]]] &], j], {i, 1, Length[slist]}], {j, 1, perm}][[order]];
Return[If[order <= perm, mylist, HoldForm[MyOrderList]]];
];
Tests:
MyOrderList[list, 1]
(*{{{a, 1}, {b, 3}, {c, 5}}, {{a, 5}, {b, 1}, {c, 3}}, {{a, 5},
{b, 3}, {c, 1}}, {{a, 1}, {b, 5}, {c, 3}}}*)
MyOrderList[list, 2]
(*{{{a, 1}, {c, 5}, {b, 3}}, {{a, 5}, {c, 3}, {b, 1}}, {{a, 5},
{c, 1}, {b, 3}}, {{a, 1}, {c, 3}, {b, 5}}}*)
MyOrderList[list, 3]
(*{{{b, 3}, {a, 1}, {c, 5}}, {{b, 1}, {a, 5}, {c, 3}}, {{b, 3},
{a, 5}, {c, 1}}, {{b, 5}, {a, 1}, {c, 3}}}*)
MyOrderList[list,4]
(*{{{b, 3}, {c, 5}, {a, 1}}, {{b, 1}, {c, 3}, {a, 5}}, {{b, 3},
{c, 1}, {a, 5}}, {{b, 5}, {c, 3}, {a, 1}}}*)
MyOrderList[list,5]
(*{{{c, 5}, {a, 1}, {b, 3}}, {{c, 3}, {a, 5}, {b, 1}}, {{c, 1},
{a, 5}, {b, 3}}, {{c, 3}, {a, 1}, {b, 5}}}*)
MyOrderList[list,6]
(*{{{c, 5}, {b, 3}, {a, 1}}, {{c, 3}, {b, 1}, {a, 5}}, {{c, 1},
{b, 3}, {a, 5}}, {{c, 3}, {b, 5}, {a, 1}}}*)
Another approach using the idea of @cvgmt:
MyOrderList[list_List, order_List] :=
Block[{slist, sorder, ordering, mylist},
slist := Map[Sort, list];
ordering :=
Extract[Permute[Ordering[Sort[order]], Ordering[#]] & /@
Permutations[order], {1}];(*@cvgmt*)
mylist := Table[slist[[i]][[ordering]], {i, 1, Length[slist]}];
Return[mylist];
];
Test:
MyOrderList[list, {b, c, a}]
(*{{{b, 3}, {c, 5}, {a, 1}}, {{b, 1}, {c, 3}, {a, 5}}, {{b, 3},
{c, 1}, {a, 5}}, {{b, 5}, {c, 3}, {a, 1}}}*)
Another approach using the idea of @kglr:
MyOrderList[list_List, order_List] :=
Block[{slist, sorder, ordering, mylist},
slist := Map[Sort, list];
ordering :=
Extract[Map[Ordering@*Ordering, Permutations[order]], {1}];(*@kglr*)
mylist := Table[slist[[i]][[ordering]], {i, 1, Length[slist]}];
Return[mylist];
];
Test:
MyOrderList[list, {c, a, b}]
(*{{{c, 5}, {a, 1}, {b, 3}}, {{c, 3}, {a, 5}, {b, 1}}, {{c, 1},
{a, 5}, {b, 3}}, {{c, 3}, {a, 1}, {b, 5}}}*)
SortBy[First] /@ list
$\endgroup$