Comparison application
foreach (var source in Sources.Where(x =&gt; !destList.Exists(s =&gt; s.ElementName == x.ElementName))
{
    var alter = lstAlteration.FirstOrDefault(a =&gt; a.ElementName == source.ElementName
                                 &amp;&amp; a.ChangeInfo.ChangeFrom == source.ElementName);

    if (alter == null) {
        alter = new Alteration
                    {
                        ElementName = source.ElementName,
                        ChangeInfo = new ChangeDetail()
                    };

        lstAlteration.Add(alter);
    }

    alter.ChangeInfo.ChangeTo = source.ElementName;
}



Sorter
Only one .ChangeInfo.ChangeTo = source.ElementName; execution