string[] list1 = { "a", "c", "b", "d", "f", "e" };
string[] list2 = { "a", "c", "b1", "d1", "f", "e" };
有没有什么方法可以比较字符串数组并获得与linq或lambda表达式不匹配的位置。
这里我期待第2和第3位不匹配(b不等于b1,d不等于d1)
答案 0 :(得分:4)
var mismatches = Enumerable.Range(0, Math.Min(list1.Length, list2.Length))
.Where(i => list1[i] != list2[i])
.ToList();
答案 1 :(得分:2)
如果两个列表中的元素计数相同,则可以执行
var result = list1.Where((x,idx) => x != list2[idx]);
答案 2 :(得分:0)
我试图提出更简单的解决方案,在这里我得到了:
var mismatchIndexes in list1.Except(list2)
.Where(s => list1.First() == list2.First())
.Select(s => Array.IndexOf(list1, s)).ToList();
当数组中的前两个元素(list1,list2)不同时,没有输出,并且给定的示例输出为2和3