协调两个对象集合

2023-12-07

我有一个表单,用户可以在其中使用 DataGrid 修改对象集合。打开表单时,我会创建原始集合的深层副本,如果按下“取消”按钮,我只会丢弃该副本。

问题是,当按下“确定”按钮时,我必须协调可能的更改:

  • 修改现有对象的属性
  • 新对象添加到集合中的任何位置。
  • 现有对象已删除。
  • 现有对象重新排序。

由于我需要保留原始引用,因此我不能只清除集合并添加修改的项目。

您知道一个可以像这样同步两个集合的简单算法吗?

我使用的是 C# 3.5,因此 LINQ 可用。


为什么不保留原件的副本,并绑定到实际的集合。如果您绑定到实际集合,则不会进行协调。当按下取消按钮时,只需将实际集合替换为原始集合的副本即可。它基本上是你想要做的事情的倒转......但它应该更容易管理。

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

协调两个对象集合 的相关文章

  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • 方法参数内的变量赋值

    我刚刚发现 通过发现错误 你可以这样做 string s 3 int i int TryParse s hello out i returns false 使用赋值的返回值是否合法 Obviously i is but is this th

随机推荐

  • 在 Excel 中,如何用最后一个前面的非空白单元格填充空白单元格?

    如何用最后一个前面的非空白单元格填充空白单元格 例如 我有这个两列表 A abc dce fds B kjh abc 我想要的是 A A abc A dce A fds B B kjh B abc 我尝试了像 IF ISBLANK A2 A
  • uipickerview swift 3 中的国家/地区列表

    我用谷歌搜索如何找到国家列表并尝试实施PickerView 但我陷入了我尝试做的这一点countries count它给了我一个错误 无法将 int 类型的返回表达式转换为 string 类型的返回表达式 有什么建议么 import UIK
  • 如何在 iOS 上截取代码截图? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何从代码中截取屏幕截图 http www iphonedevsdk com forum iphone sdk development 2353 possible make sc
  • 查找UDP数据包的源IP/进程

    我在用recvfrom 在我的 C 程序中接收来自多个客户端的 UDP 数据包 这些客户端可以使用自定义用户名登录 一旦他们登录 我希望他们的用户名与唯一的客户端进程配对 这样服务器就可以根据数据包的来源自动知道用户是谁 我如何从收到的数据
  • Android viewpager 检测滑动超出范围

    在我的 Android 应用程序中 我使用 viewpager 进行图像滑动 我的要求是 如果用户滑出第一页和最后一页 则活动应该完成 我已经采取了这个example 但方法setOnSwipeOutListener在我的活动中没有被调用
  • 通过 segue 传递变量? Xcode 8 斯威夫特 3

    所以我正在创建一个闹钟 一个视图控制器是表视图 另一个视图控制器由带有提交按钮的 UIDatePicker 组成 目标是当用户单击提交按钮时 它将日期保存在日期选择器上 除了保存日期之外 它还是表视图控制器的一个序列 我正在尝试显示保存为单
  • Windows API 代码包 TaskDialog 缺少图标

    我的图标TaskDialog缺失 And in the taskbar 我的代码是这样的 using Microsoft WindowsAPICodePack using Microsoft WindowsAPICodePack Dialo
  • 如何编写(flutter web)代码以便 JavaScript 文件在我的本地计算机上运行?

    我构建了一个简单的 flutter web 应用程序 它在 github io 和localhost server flutter run d chrome 如果我创建一个发布版本 flutter build web 将应用程序转换为 基本
  • 页面对象 gem:根据可见性识别具有相同属性的对象

    我有一个包含以下 html 的文本框 这id是动态的 我无法使用它 我在文本框中填写了一些文本
  • SQL 网络接口,错误:26 - 定位为 MD​​F 文件指定的服务器/实例时出错

    我添加了一个数据库文件 mdf 使用 Visual Studio 内置功能添加到我的应用程序 数据库位于App Data文件夹 它运行良好 但是当我发布它并将其上传到服务器时 它会出现此错误 发生网络相关或特定于实例的错误 建立与 SQL
  • 如何减少 p:ajax 期间的请求负载p:数据表分页

    我正在使用 JSF 2 2 和 Primefaces 5 1 有一个可编辑的 primefaces 数据表 启用了分页
  • 如何根据其他列向列添加值

    在 pandas 中 如何根据其他列中的字符串向列添加值 类似于二维切片操作 例如 有一个像这样的数据框 df pd DataFrame name foo foo bar bar colx 1 2 3 4 coly 5 6 7 8 如何将
  • 完全更改当前 PowerShell 会话的语言(包括文化)

    我的Win 10系统有西班牙语 我的意思是完全用英语操作 PowerShell 会话 在我尝试过的一切 见下文 中 我设法改变了UICulture to en US对于当前会话 但不是Culture 有什么办法可以永久改变Culture对于
  • 将 OnClick 事件添加到 ASP.NET 控件

    我想创建OnClick为我的活动panel 到目前为止 大多数谷歌结果看起来或多或少是这样的 将 onclick 事件添加到 aspnet 标签 有什么方法可以从 javascript 或面板属性调用代码隐藏函数吗 因为我想将用户重定向到新
  • 如何启动 PHP 类并在多个文件中使用它?

    我现在很困惑 在我关于这个问题的上一篇文章中 答案是使用单例来确保对象仅启动一次 但我遇到了相反的问题 如果我有一个名为索引 php然后我将这些文件包含进去 类1 php 类2 php 类3 php 类4 php In 索引 php我会有
  • 具有多个条件的 COUNTIF

    您能告诉我如何在多个条件下使用 COUNTIF 吗 我的提案 左 显示了一项标准 不同区域 的公式 但是 我有兴趣计算每个不同月份的不同区域 两个标准 右侧 期望的结果 您可以使用COUNTIFS instead 1 COUNTIFS A
  • 为什么无穷大在 Windows 10 控制台中打印为“8”?

    我正在测试除法返回的内容 包括零 即0 1 1 0 and 0 0 为此 我使用了类似于以下内容的内容 Console WriteLine 1d 0d 然而这段代码打印8 not Infinity或其他一些字符串常量 例如PositiveI
  • PropertyGrid - 根据另一个属性值更改下拉属性编辑器的项目

    我正在尝试在自定义组件中实现下拉属性 并且我使用了这个答案 and 这个答案作为指导 到目前为止 我设法让它工作 并在下拉列表中使用预定义的项目 但我仍然需要弄清楚如何更改下拉列表中的项目 这是我到目前为止的代码 从上面提到的链接构建 Ty
  • 静态javascript未在jade中呈现(使用express/node.js)

    我希望你一切都好 我突然无法在 jade 模板中渲染任何外部 javascript 为了弄清楚事情的真相 我将其精简到最低限度 节点0 6 11 Express 2 5 8 jade 0 20 3 app js var express re
  • 协调两个对象集合

    我有一个表单 用户可以在其中使用 DataGrid 修改对象集合 打开表单时 我会创建原始集合的深层副本 如果按下 取消 按钮 我只会丢弃该副本 问题是 当按下 确定 按钮时 我必须协调可能的更改 修改现有对象的属性 新对象添加到集合中的任