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