比较两个List <string> by value和index </string>

时间:2014-02-24 13:23:39

标签: c# compare

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

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

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

2 个答案:

答案 0 :(得分:4)

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];
    }
}

你需要这样的东西吗?

答案 1 :(得分:2)

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

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);