我面临一个非常奇怪的问题。我有一个列表,并试图从以下 for 循环中更新其内部结构字段之一。
foreach (var item in AppUserDetail )
{
int AppUserID = item.AppUserId;
List<int> list = templateCategory.AppUserTemplateCategorySecurityGroupXrefs.Where(a => a.AppUserId == AppUserID).Select(b => b.SecurityGroupId).ToList();
item.AppUserSecurityGroupXrefs.Where(a => list.Contains(a.SecurityGroupId)).Select(b => b.SecurityGroup).Select(c => c.Selected = true);
bool s = item.AppUserSecurityGroupXrefs.Where(a => list.Contains(a.SecurityGroupId)).Select(b => b.SecurityGroup).Select(c => c.Selected).FirstOrDefault();
}
return AppUserDetail;
在循环的第三行,您可以看到我使用 select 本身将值更改为 True。当我运行应用程序时,返回对象上的值看起来没有变化。但是,如果我们通过在循环中放置一个断点来在即时窗口中执行同一行,它会更新 Data 并反映在返回的对象AppUserDetail 上。我真的很困惑为什么它只能从即时窗口更新,而不是直接执行代码。
item.AppUserSecurityGroupXrefs.Where(a => list.Contains(a.SecurityGroupId)).Select(b => b.SecurityGroup).Select(c => c.Selected = true);