【发布时间】:2018-09-06 04:04:41
【问题描述】:
我有两个列表(当前列表和新列表)。 Current 可以包含 100,000 多个字符串,每个字符串都以唯一的数字开头。 New 可以包含 50 到 200 个字符串,每个字符串都有一个唯一的编号。
如果 New 包含以相同 6 个字符开头的字符串,则它应该替换 Current 中的相同条目。任何不存在于 Current 中但存在于 New 中的新条目都应添加到 Current。我考虑过 Union、Concat 和 Intersect,但每个都只处理整个字符串。
有没有办法只比较列表中项目的前 6 个字符,如果发现它存在于 New 中,则替换 Current 中的条目?
也许将上述可视化的最简单方法是:
当前
123456 66 Park Avenue Sydney
新
123456 88 River Road Sydney
Current 中的结果需要是
123456 88 Park Avenue Sydney
如果Current.Union(New, first X characters) 是可能的,那就完美了。
任何关于根据前 6 个字符合并两个列表而不重复的建议将不胜感激。
【问题讨论】:
-
您当前的集合应该是前六个和完整字符串的
Dictionary<string,string>。然后迭代 New,检查它的长度是否为 6 或更大,并获取前 6 个的子字符串。如果字典有键(前六个),用完整的字符串更新它。如果没有,则将子字符串添加为键,将完整的字符串添加为值。如果字符串的长度小于 6,则按照业务规则的规定进行。 -
如果你能提供一个minimal reproducible example 带有示例输入和预期结果,那就太棒了。
-
嗯,结果不应该是“123456 88 River Road Sydney”吗?