2

リスト内の単一のアイテムの単一のプロパティを最も簡潔な方法で変更するにはどうすればよいですか?

    public static class QuestionHelper
    {
        public static IEnumerable<SelectListItem> GetSecurityQuestions()
        {
            return new[]
                {
                    new SelectListItem { Value = "What was your childhood nickname?", Text = "What was your childhood nickname?"},
                    new SelectListItem { Value = "What is the name of your favorite childhood friend?", Text = "What is the name of your favorite childhood friend?"},
                    ...
                };
        }
    }

このリストを生成したいのですが、Selectedプロパティを文字列に基づいて1つの項目に設定します。

string selectText = "What is the name of your favorite childhood friend?";
form.SecurityQuestions = QuestionHelper.GetSecurityQuestions().Select(x => { /*Set Selected = true for SelectListItem where item.Text == selectedText */ } );

return PartialView(form); 

注:これは、if(selectedText == null)を考慮して、最初の項目を選択済みとして設定する必要があります

4

1 に答える 1

4

LINQではなく、foreach!で実行してください。

form.SecurityQuestions = QuestionHelper.GetSecurityQuestions();
foreach(var item in form.SecurityQuestions)
    item.Selected = item.Text == selectedText;

if(selectedText == null)  // Select the first item by default
    form.SecurityQuestions.First().Selected = true;

LINQは、オブジェクトの状態を変更するためにnoをクエリするために作成されました。

于 2013-02-03T23:08:28.440 に答える