Если списки могут быть разной длины, вы можете сделать что-то вроде этого:
IList<string> first = new List<string> { "A", "B", "C", "D", "E", "F" };
IList<string> second = new List<string> { "A", "Z", "C", "D", "Y" };
IList<string> longer = first;
IList<string> shorter = second;
IEnumerable<int> differentIndices = longer.Select((s, i) => i > shorter.Count - 1 || !s.Equals(shorter[i]) ? i : -1).Where(n => n >= 0);
Console.WriteLine(string.Join(", ", differentIndices));
Это фактически одна строка.Результаты для этого примера: "1, 4, 5"
.
. Ключевым моментом является то, что Select
отображает совпадающие индексы на -1, и они затем отфильтровываются с помощью Where
.