如何比较两个列表并找出更改内容的位置

How to compare two lists and find out the position of the changed content

提问人:Niranjan 提问时间:6/12/2023 最后编辑:Rand RandomNiranjan 更新时间:6/12/2023 访问量:65

问:

public class Editor
{
    public int id { get; set; }
    public string BaseContent { get; set; }    
    public string LineNumber { get; set; }
}

我列表中有以下数据

enter image description here

我在另一个列表中有以下数据

enter image description here

如果您看到上面的两个列表仅在第 2 行内容已更改。

原文内容:

租船人在此期间租用船舶以及任何可选 扩展-

更改的内容

这是新内容 租船人 这也租用了该船 连同任何可选的扩展

所以我想构建一个新列表/获取如下所示的输出

enter image description here

因此,在输出中,我想从这些添加文本的原始和字符位置捕获更改的内容。我正在努力寻找一些逻辑,有人可以帮助我建立这个,任何帮助将不胜感激。谢谢

c#

评论

0赞 Camadas 6/12/2023
不知道您使用的是哪个版本的 dotnet,但如果您使用的是 6 或更高版本,请检查 intersetby、stackoverflow.com/questions/70135623/...
0赞 Dmitry Bychenko 6/12/2023
看起来像编辑距离/编辑过程(莱文斯坦算法):您想知道原始列表是如何编辑(插入、更新或删除)的。原始算法处理字符串中的字符,在您的情况下,它将是列表中的项目
0赞 Niranjan 6/12/2023
你有@DmitryBychenko例子吗?
0赞 Dmitry Bychenko 6/12/2023
@Niranjan:像这样的东西 - dotnetfiddle.net/kS6RJh - 首先我找到更改(插入、编辑、删除)的项目,然后提供有关确切编辑内容的详细信息。我已经实现了一个 nuget 包 Literatu 来操作字符串(ToEdit 是从那里摘录的) - nuget.org/packages/Literatu
0赞 Niranjan 6/12/2023
非常感谢您抽出宝贵时间并解释这个算法。我需要一些时间来理解这一点,我现在将完成它。

答: 暂无答案