为什么 IEnumerable 会丢失更新的数据?

2024-01-09

你能向我解释一下为什么执行以下代码后Selected属性未更新为true?

The ListItem使用的类型来自System.Web.UI.WebControls命名空间并且是一个类(不是结构)。我相信FirstOrDefault函数返回对实例的引用,我可以更新该实例并在items可数。

// produce list items out of the communities
IEnumerable<ListItem> items = communities.Select(community => new ListItem(community.Name, community.Id.ToString()));

// mark the right list item as selected, if needed
if (platform.CommunityId > 0)
{
    string strCommunityId = platform.CommunityId.ToString();
    ListItem selectedItem = items.FirstOrDefault(item => item.Value == strCommunityId);
    if (selectedItem != null) selectedItem.Selected = true;
}

// now items do not store any updated item!

这是因为每次执行枚举器foreach被调用并因此创建新项目而不是返回包含我更新的项目的集合?


问题是IEnumerable is 不可重复。您正在执行投影(community => new ListItem) 每次被枚举时- 因此这是一个新的ListItem每一次。Select是非缓冲的延迟投影。

您可以通过简单添加一个来修复这里的所有内容.ToList()将数据强制放入单个列表中;

var items = communities.Select(
    community => new ListItem(community.Name, community.Id.ToString())
).ToList();

现在数据已在列表中,您可以循环list任意多次 - 它将始终是相同的项目,并且更改将被保留。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 IEnumerable 会丢失更新的数据? 的相关文章

  • Qt - QProcess 不工作

    我尝试启动 Internet Explorer 所以我使用下面的代码 QProcess process new QProcess this QString temp C Program Files Internet Explorer iex
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 在 C# 中,如何根据在 gridview 行中单击的按钮引用特定产品记录

    我有一个显示产品网格视图的页面 该表内有一列 其中有一个名为 详细信息 的超链接 我想这样做 以便如果用户单击该特定产品的详细信息单元格 将打开一个新页面 提供有关该产品的更多信息 我不确定如何确定哪个Product记录链接的详细信息以及我
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person

随机推荐

  • MKAnnotation Swift

    我不确定如何用 swift 语言注释地图 我不知道如何创建 NSObject 类 以下是我尝试过但无法运行的代码 import Foundation import MapKit class MapPin MKAnnotation var m
  • 如何平滑 MATLAB 中的绘图?

    我在图表上绘制了大约 9000 个点 全分辨率 https i stack imgur com VeIP5 jpg 其实剧情并没有我想象的那么顺利 有什么方法可以将图表平滑到所需的程度吗 或者某种形式的阈值处理 以便我可以有选择地平滑太凹凸
  • VBA 参考库

    我是 VBA 新手 一直在为 Office 编写一个小型宏应用程序 我们有大约 80 个用户 他们的电脑设置基本相同 除了少数用户之外 所有用户都可以访问它 我一直在尝试使用 Web 服务引用来自动访问网页 并且我还将 Microsoft
  • 在 Python 中将 2D 图形转换为圆柱体

    At the moment I have a figure that looks like this 由代码生成 import matplotlib pyplot as plt import numpy as np data np rand
  • 无法初始化 OpenGL 渲染器库

    我正在尝试使用 genymotion 打开虚拟 Android 设备 问题是它无法启动 Genymotion 虚拟设备 错误显示无法初始化 OpenGL 渲染器库 我已经检查了 OpenGL 支持 它的版本是 3 0 现在有什么问题吗 无法
  • 来自 Ajax 源的 DataTables 按数据顺序排序并显示格式化日期

    基本上我想将数据从ajax提取到我的列中 但我希望列中的单元格具有data order它们的属性与 ajax 调用的值并使用 moment js 格式化单元格中的数据 我认为这是使其美观且可订购的最佳方式 我找到了 datetime mom
  • 如何订阅改变DependencyProperty? [复制]

    这个问题在这里已经有答案了 可能的重复 监听依赖属性的变化 https stackoverflow com questions 4764916 listen to changes of dependency property 请原谅我的英语
  • 使用 jersey 客户端将 JSON 响应读取为字符串

    我正在使用 jersey 客户端将文件发布到 REST URI 该 URI 以 JSON 形式返回响应 我的要求是将响应读取为字符串 JSON 以下是将数据发布到 Web 服务的代码段 final ClientResponse client
  • C# UTF8 输出保持编码字符完整

    我有一个非常简单的问题 我似乎无法理解 我有一个正确编码的 UTF8 String 我使用 Json NET 解析为 JObject 摆弄一些值并将其写入命令行 保持编码字符完整 除了保持编码字符完整之外 一切都很好 Code var js
  • Ajax 将“Map”对象传递给 Spring MVC 控制器

    Spring MVC 似乎不知道如何将 javascript 地图 映射到 Java 地图对象 在 Web UI 中 例如 foo jsp
  • Selenium 未填写表单上的密码属性

    我有一个非常简单的硒脚本来尝试调试我遇到的问题 我所做的就是填写用户名 然后填写密码 然后检查我输入的密码是否在密码字段中 我这样做的原因是我无法让它进行一般身份验证 当密码正确时始终会出现 密码不正确问题 表单 html
  • ec2:RunInstances 的最低 IAM 策略

    我正在尝试缩小运行预定义机器映像的最小策略范围 该映像基于两个快照 我只想启动 m1 medium 实例类型 在此基础上并在以下方面的帮助下这一页 http docs aws amazon com AWSEC2 latest APIRefe
  • 为 ng-bootstrap modal (NgbModal) 编写单元测试 [Angular 6]

    我在为应用程序中的确认模式编写单元测试时遇到一些问题 这是我想测试的一段代码 confirmModal prompt Are you sure title Confirm Observable
  • 硬盘读取性能问题

    我有一个 C 程序 它从硬盘读取文件并对文件中的数据进行一些处理 我正在使用标准 Win32 API 来读取文件 我的问题是这个程序有时速度非常快 然后突然减慢到之前速度的 1 6 如果我在多次运行中一次又一次地读取相同的文件 那么通常第一
  • Azure Function V3 无法加载文件或程序集“Microsoft.Extensions.DependencyModel,版本=3.1.6.0”

    我们尝试使用 DependencyContext Default RuntimeLibraries 来获取所有项目程序集并将我们想要的类型加载到 ServiceCollection 中 此代码在 asp net core Web 应用程序上
  • 如何在 Unix 中交换文件名?

    有什么方法可以在不使用临时变量的情况下快速完成此操作 有内置函数吗 编辑 谢谢你们的回答 看起来我需要澄清我的问题 但在大多数情况下 你们假设是正确的 有两个文件 并且文件名是相反的 文件 A 的名称为 B name file 文件 B 的
  • 如何从另一个应用程序访问字符串资源

    我有一个应用程序 A 和 B 应用程序 假设我在应用程序 A 中有一个字符串资源 lt string name abc gt ABCDEF lt string gt 如何从 B 中的活动访问 abc 的值 我尝试了以下方法 try Pack
  • 在 C# 中异步处理项目队列

    我正在尝试创建一个处理工作队列的系统 该系统具有以下规格 该系统有两个组件 工作分配器和工作人员 同时运行的worker数量有一个设定的上限 该上限大于一 为了避免同一任务被执行两次的问题 只有一个工作分配者 您会使用什么设计来创建这样的系
  • Windows 上 Sublime Text 2 的键盘列选择

    我一直在尝试通过 Windows 上的键盘绑定来选择列 The 默认 Windows sublime 键盘映射说 keys ctrl alt up command select lines args forward false keys c
  • 为什么 IEnumerable 会丢失更新的数据?

    你能向我解释一下为什么执行以下代码后Selected属性未更新为true The ListItem使用的类型来自System Web UI WebControls命名空间并且是一个类 不是结构 我相信FirstOrDefault函数返回对实