次の関係を持つ 3 つのオブジェクトがあります。Feature には、FeatureGroup オブジェクトの List<> が含まれています。FeatureGroup には、Application オブジェクトがプロパティとして含まれています。
特定の機能についてアプリケーション名のリストを取得できる辞書を作成したいと考えています (アプリケーションは機能を共有しており、どのアプリがどの機能をサポートしているかを確認したい)。
正しく動作するコードの一部を次に示します。
Dictionary(Feature, List(string)) AppLookup = this.DataContext().Features
.Select(x => 新規
{
機能 = x、
AppNames = x.FeatureGroups
.Select(y => y.Application.ApplicationShortName)
。明確()
.ToList()
}))
.ToDictionary(x => x.Feature, x => x.AppNames);
var appsFound = viewModel.AppLookup
.Where(x => x.Value.Count > 0)
.ToList(); //これには正しい値である 27 が含まれます
これは私がコーディングしたかった元の方法ですが、2つの Expand() 行のコメントを外さない限り機能しないようです:
Dictionary(Feature, List(string)) AppLookup = this.DataContext().Features
//.Expand("機能グループ")
//.Expand("機能グループ/アプリケーション")
.ToDictionary(x => x, x => x.FeatureGroups
.Select(y => y.Application.ApplicationShortName)
。明確()
.ToList());
var appsFound = viewModel.AppLookup
.Where(x => x.Value.Count > 0)
.ToList(); // 上記の .Expand 行がコメント解除されていない限り、これは 0 です