Я использовал выпадающий список для поиска. Текстовое значение должно отличаться от значения. Итак, я создал 2 типа методов:
List<string> lstRoles = new List<string>();
lstRoles = _repository.GetRolesForFindJobseekers();
List<string> lstFunctions = new List<string>();
lstFunctions = _repository.GetFunctionsForRolesFindJobSeekers();
List<SelectListItem> selectListRoles = new List<SelectListItem>();
int i = 1;
foreach (string role in lstRoles)
{
selectListRoles.Add(new SelectListItem
{
Text = role,
Value = role,
Selected = (i == 0)
});
i++;
}
ViewData["RolesForJobSeekers"] = selectListRoles;
lstFunctions
должен входить в поле значения. Как мне это добавить?
4 ответа
Вы можете сначала объединить эти 2 списка в один, а затем перебрать этот список.
var lstCombined =
lstRoles
.Zip(lstFunctions, (role, function) => new {Role = role, Function = function}).ToList();
int i = 1;
foreach (var item in lstCombined)
{
selectListRoles.Add(new SelectListItem
{
Text = item.Role,
Value = item.Function,
Selected = (i == 0)
});
i++;
}
Как насчет
var selectListRoles = _repository.GetRolesForFindJobseekers().Zip(
_repository.GetFunctionsForRolesFindJobSeekers(),
(role, function) => new SelectListItem
{
Text = role,
Value = function,
Selected = false
}).ToList();
selectListRoles[0].Selected = true;
ViewData["RolesForJobSeekers"] = selectListRoles;
Если вы не хотели создавать экземпляр selectListRoles
// If you know selectListRoles starts empty, use 0 instead of baseIndex.
var baseIndex = selectListRoles.Count;
selectListRoles.AddRange(_repository.GetRolesForFindJobseekers().Zip(
_repository.GetFunctionsForRolesFindJobSeekers(),
(role, function) => new SelectListItem
{
Text = role,
Value = function,
Selected = false
}));
selectListRoles[baseIndex].Selected = true;
Вместо foreach вы можете использовать счетчики для одновременного перебора двух списков.
IEnumerator enum1 = lstRoles.GetEnumerator();
IEnumerator enum2 = lstFunctions.GetEnumerator();
int i = 1;
while ((enum1.MoveNext()) && (enum2.MoveNext()))
{
selectListRoles.Add(new SelectListItem
{
Text = enum1.Current,
Value = enum2.Current,
Selected = (i == 0)
});
i++;
}
using
для перечислителей.
Вы можете использовать linq и сделать это одним запросом:
var selectListRoles =
lstRoles
.Zip(lstFunctions, (role, function) => new { role, function })
.Select((rf, i) => new SelectListItem()
{
Text = rf.role,
Value = rf.function,
Selected = (i + 1 == 0),
})
.ToList();
ViewData["RolesForJobSeekers"] = selectListRoles;
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.