使用 linq C# 更新 List<string> 值
Updating List<string> values using linq C#
我有一个字符串列表,如果列表中的某些项目与单独的对象列表中的字符串值匹配,我想遍历并更改值。
用户将电子邮件地址输入到包含事件成员列表的事件对象中:
List<string> EventMembers
然后我想检查数据库中的所有用户以找到与输入的电子邮件地址匹配的用户名(电子邮件地址)
我知道我不能使用 foreach 循环更改列表中的值,但我不知道如何使用 linq。基本上我正在尝试做这样的事情:
var allUsers = _userManager.Users
foreach (var a in allUsers)
{
foreach (var e in @event.EventMembers)
{
if (e == a.UserName)
{
e = a.FirstName + a.LastName;
}
}
}
最好的办法是定义一个初始成员集合,这样您就不会在 foreach 仍然 运行 时继续修改列表。然后您可以检查 EventMembers
是否包含用户名,然后通过使用索引访问该值来替换它。
var allUsers = _userManager.Users;
List<string> Members;
foreach (var a in allUsers)
{
if (@event.EventMembers.Contains(a.UserName))
{
var index = @event.Members.IndexOf(a.UserName);
Members[index] = a.FirstName + a.LastName;
}
}
EventMembers = Members;
我有一个字符串列表,如果列表中的某些项目与单独的对象列表中的字符串值匹配,我想遍历并更改值。
用户将电子邮件地址输入到包含事件成员列表的事件对象中:
List<string> EventMembers
然后我想检查数据库中的所有用户以找到与输入的电子邮件地址匹配的用户名(电子邮件地址)
我知道我不能使用 foreach 循环更改列表中的值,但我不知道如何使用 linq。基本上我正在尝试做这样的事情:
var allUsers = _userManager.Users
foreach (var a in allUsers)
{
foreach (var e in @event.EventMembers)
{
if (e == a.UserName)
{
e = a.FirstName + a.LastName;
}
}
}
最好的办法是定义一个初始成员集合,这样您就不会在 foreach 仍然 运行 时继续修改列表。然后您可以检查 EventMembers
是否包含用户名,然后通过使用索引访问该值来替换它。
var allUsers = _userManager.Users;
List<string> Members;
foreach (var a in allUsers)
{
if (@event.EventMembers.Contains(a.UserName))
{
var index = @event.Members.IndexOf(a.UserName);
Members[index] = a.FirstName + a.LastName;
}
}
EventMembers = Members;