ですから、これはかなり簡単だと思います。
これが私のコードです:
Dictionary<int, IEnumerable<SelectListItem>> fileTypeListDict = new Dictionary<int, IEnumerable<SelectListItem>>();
foreach (PresentationFile pf in speakerAssignment.FKPresentation.PresentationFiles)
{
IEnumerable<SelectListItem> fileTypes = Enum.GetValues(typeof(PresentationFileType))
.Cast<PresentationFileType>().Select(x => new SelectListItem
{
Text = x.ToString(),
Value = Convert.ToString((int)x),
Selected = pf.Type == (int)x
});
fileTypeListDict.Add(pf.ID, fileTypes);
}
何が起こっているのかというと、最終的に辞書にはすべての正しいキーがありますが、すべての値はfileTypes
ループの最後の反復中に作成されたリストに設定されます。これは、参照として使用されているオブジェクトと関係があると確信していますが、C#を使用していたときは、この問題はこれまで見たことがありません。なぜこれが起こっているのか、そしてこの問題をどのように解決する必要があるのかを説明したい人はいますか?
ありがとう!