<string> 按值和索引比较两个列表



我有两个字符串集合,如果集合中不存在该值并且值的索引不等于,则需要返回任何字符串值。我在不存在的情况下实现,但我不知道为索引添加条件不等于。

public IEnumerable<string> GetInvalidHeaders(IEnumerable<string> list1, List<string> list2)
{            
     return list1.Where(header => list2 == null
                               || list2.All(x => x != header));
}

集合的值必须按值和索引唯一

public IEnumerable<string> GetDifferences(List<string> list1, List<string> list2)
{
    for (int i = 0; i < list1.Count; i++)
    {
        if (list1[i] != list2[i]) yield return list1[i];
    }
}

你需要这样的东西吗?

这不仅接受字符串,还使用延迟执行:

public IEnumerable<T> GetDifferences<T>(IList<T> seq1, IList<T> seq2)
{
    for (int i = 0; i < seq1.Count; i++)
    {
        T item1 = seq1[i];
        if (i >= seq2.Count)
            yield return item1;
        else
        {
            T item2 = seq2[i];
            if (!object.ReferenceEquals(item1, item2))
            {
                if (item1 == null || item2 == null)
                    yield return item1;
                else if (!item1.Equals(item2))
                    yield return item1;
            }
        }
    }
}

用法:

var diff = GetDifferences(list1, list2);

相关内容

  • 没有找到相关文章