c# - 更新列表使用 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;
}
}
}
解决方案
最好的办法是定义成员的初始集合,这样您就不会在 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;
推荐阅读
- javascript - 使用语义 UI 下拉菜单替代“onChange”事件?
- javascript - 删除javascript中的条目时记住位置
- django - Django:在表单提交时发送电子邮件
- python - 为什么有些 .xlsx 文件可以用 openpyxl 成功打开,而有些则打不开?
- django - 将初始值从先前的详细视图传递到表单字段
- javascript - 如何仅在某些平铺层(Phaser)中生成对象
- javascript - 循环时如何访问变量
- jquery - 如果单词在两列中,则优先于 mysql 中的结果
- jquery - 使用 RedirectToAction 传递 TempData 在 Visual Studio 中有效,但在生产中无效
- magento-1.9 - 我已经安装了 Magento 1.9.4 示例数据,但是每当我提取它时,它都会显示空文件夹...有人可以告诉我为什么会这样吗?