比较两个字符串列表的元素顺序

Compare element order of two string list

我有第一个字符串列表:

"GENRE",
"NATIONALITY",
"PRODUCTION",
"FIRSTYEAR",
"LASTYEAR",
"FILTER"

我有第二个字符串列表:

"NATIONALITY"
"LASTYEAR"
"FILTER"

我想检查第二个列表中的元素(即使缺少某些元素)是否与第一个列表的顺序相同。

示例:

"NATIONALITY"
"LASTYEAR"
"FILTER"

必须return TRUE 并且

"LASTYEAR"
"NATIONALITY"
"FILTER"

必须 return FALSE 因为根据第一个列表 "NATIONALITY" 必须在 "LASTYEAR" 之前

我试图用每个元素的 "IndexOf" 获取索引,但我不知道如何有效地比较它们。

在这种情况下使用自定义比较器(实现 IComparer)是否是一个好的解决方案?如果是怎么办?是不是用Enum来实现比较更好?

需要帮助提前致谢

我首先过滤第一个列表,使其仅包含第二个列表中包含的项目。

var list1Filtered = list1
    .Where(x => list2.Contains(x))
    .ToList()

如果您确定第二个列表中包含的所有项目也包含在第一个列表中,并且它们在两个列表中都是唯一的,则可以删除以下检查

if (list1Filtered.Count != list2.Count) {
    return false;
}

现在比较容易了

for (int i = 0; i < list2.Count; i++) {
    if (list2[i] != list1Filtered[i]) {
        return false;
    }
}
return true;

您可以使用 Intersect 获取列表之间的交集,然后使用 SequenceEqual 方法检查该序列是否与 list2:

相同
list1.Intersect(list2).SequenceEqual(list2);