掘り下げてみたところ、MvcContrib Grid が公開するネイティブの OrderBy() メソッドは、サブプロパティでのデータの並べ替えをサポートしていないようです。
を呼び出すのではなく、データの表示と並べ替えを処理するコントローラー アクションではdata = data.OrderBy(sort.Column, sort.Direction)
、動作を少しカスタマイズする必要があります。あなたの場合、最も簡単な解決策は、値「Country.Name」を特別に処理し、残りの並べ替え可能な列にデフォルトの動作を使用することです。次のようなもので十分です。
public ActionResult Index(GridSortOptions sort) {
ViewData["sort"] = sort;
var data = GetData();
if (!string.IsNullOrEmpty(sort.Column)) {
if(sort.Column.Equals("Country.Name", StringComparison.OrdinalIgnoreCase)) {
if(sort.Direction == SortDirection.Ascending) {
data = data.OrderBy(d => d.Country.Name);
} else {
data = data.OrderByDescending(d => d.Country.Name);
}
} else {
data = data.OrderBy(sort.Column, sort.Direction);
}
}
return View(data);
}