【问题标题】:How to reconcile two collections如何协调两个集合
【发布时间】:2014-08-11 21:19:14
【问题描述】:

我有 2 个相同类型元素的集合。我们将这些元素称为字母字母表。每个字母的 ID 为 int,名称为字符串。 所以

ID   Letter
0    A
1    B
2    C
3    D

等等。 第一个集合包含字母,第二个包含选定的字母。 在第一步中,我创建了新的 selectedLettersCollection,这很容易。我只是将字母集合中的元素添加到 selectedLettersColletion 并立即从源集合(字母表)中更新它。因此,假设我创建了字母表的前 5 个字母的集合并将其保存到 SQL 表中。现在字母集合从 F 开始,包含字母到 Z,selectedlettersCollection 包含字母 A、B、C、D 和 E。

现在假设我想从 selectedLettersCollection 中删除字母 C 并将其移回字母表并从字母表中获取字母 G 并将其移至 selectedLettersCollection。 在 LINQ、泛型集合和/或 T-SQL 中执行此操作的最有效方法是什么?

我当然会创建一个新的选定项目临时集合并将选定元素加载到其中。然后我将执行我的添加删除操作。但到目前为止,我想到的唯一协调这些集合的方法是遍历 selectedLettersColletion 和新的临时集合并相应地移动元素,但我想知道是否有一种方法不需要迭代,类似于 TSQL 的连接寻找 NULL。

【问题讨论】:

  • 哇...字太多了,为什么只显示你的sql而不是字?
  • 为什么不只选择一个带有布尔属性的集合?
  • @ Blam - ... 因为源集合是(当前)490 个元素的可重用集合。这些元素中的每一个都可能是无数功能组的成员。
  • 那么你需要一个更好地反映你真正想做的事情的问题陈述。

标签: linq tsql generics collections garbage-collection


【解决方案1】:

我将使用 A 和 B 作为表名。 要将 Id = 1 的行从表 A 移动到表 B,请使用以下命令:

DELETE A 
OUTPUT deleted.Id, deleted.Letter INTO B
WHERE Id = 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2015-08-11
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多