編集:
この例の両方のクエリは、場所の並べ替え順ではありません。これを行う方法について何か提案はありますか?
子エンティティ列によるグループのエンティティ コレクションの順序付けについて、助けが必要です。グループから場所への 1 対多の関係があります。
グループ名で並べ替えられたグループを取得し、次に場所の並べ替え順序でグループを取得する必要があります。
子エンティティはコレクションであるため、問題が発生しています。
これは私が使用しているコードですが、動作しますが重複を返します:
var groups = db.GetNavigationGroups()
.Where(g => selectedLocation > 0 ? g.NavigationGroupLocations.Any(l => l.Location == selectedLocation) : true)
.SelectMany(g => g.NavigationGroupLocations, (g, l) => new { g, l })
.OrderBy(x => x.g.Name)
.ThenBy(x => x.l.SortOrder)
.Select(x => x.g);
次に、FirstOrDefault() を使用してこのアプローチを試しました。
List<NavigationGroup> groups = db.DataModel.NavigationGroups
.Where(g => selectedLocation > 0 ? g.NavigationGroupLocations.Any(l => l.Location == selectedLocation) : true)
.OrderBy(g => g.Name)
.ThenBy(g => g.NavigationGroupLocations.Where(l => l.Location == selectedLocation && l.GroupID == g.ID).OrderBy(l => l.SortOrder).FirstOrDefault())
.ToList();
問題は、場所の SortOrder 列に基づいて必要な順序でグループを取得できないように見えることです。