如何以最简洁的方式更改列表中单个项目的单个属性?
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属性设置为一项:
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),然后将第一项设置为Selected
最佳答案
不要使用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已创建用于查询否以修改对象的状态。
关于c# - 更改列表中项目的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14678418/