首页 > 解决方案 > 更新列表使用 linq C# 的值

问题描述

我有一个字符串列表,如果列表中的某些项目与单独的对象列表中的字符串值匹配,我想遍历并更改值。

用户将电子邮件地址输入到包含 EventMembers 列表的 Event 对象中:

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;
                        }
                    }
                }

标签: c#asp.netlistlinqmodel-view-controller

解决方案


最好的办法是定义成员的初始集合,这样您就不会在 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;

推荐阅读