算法建议唯一值和编辑

时间:2012-07-11 15:07:45

标签: c# linq algorithm

我有一个接受字符串值的空列表。

当添加一个元素时,我需要检查列表中是否已存在具有相同值的字符串,如果是,则应发生异常(ROLE 1只是数组中的唯一值)。

现在我希望用户在列表中设置编辑元素,如果新编辑的值是唯一的,则应该发生异常。

我的问题是:让我们想象用户选择编辑元素,但实际上在发送到服务器时不会更改值。系统应检测到元素未被更改并接受该值(即使列表中已存在该值)。

PS我简化了问题,我实际上是在使用MVC和EF& LINQ。我的问题是我无法检查我的应用程序界面中是否已编辑插入的值。

你能帮我找一个有效的算法来解决这个问题吗?感谢

如果问题足够明确或者您需要更多信息,请告诉我

1 个答案:

答案 0 :(得分:1)

这是我的解决方案:

  1. 让客户端检查文本是否被修改。如果没有,请告诉服务器没有修改。如果这是不可能的,客户端同时发送orinigial文本和修改后的文本,然后服务器将能够检查它是否被修改。 (如果不是那么就没有必要触摸你正在存储的数据)。这适用于桌面和网络环境。

  2. 首选不使用列表,使用集合(可能是哈希集)。该套装只允许每个项目一次。万一你不能猜我可以继续使用列表。如果我正确理解您正在使用数据库,那么如果您可以直接与数据库引擎连接而不是同步列表(或设置),那么您的应用程序将会提升性能。

  3. 将list / set的版本转换为add-remove对(而不是设置项目)。在进行任何修改之前,请检查列表/集是否包含新值。如果新值已经存在,那么您可以抛出异常或向客户发送消息(或者更适合您的环境)。

  4. 您可能希望同步对列表/集的访问权限,保持简单:使用锁(监控)。我会考虑读写锁,但这会让你在学习时变得复杂。 [如果你直接与数据库引擎接口,你可以让它处理它]。注意:如果您只有一个客户端,则不需要这样做(除非该单个客户端可以发送多个并发请求......:P)。