大家好,有两个列表,您需要通过行中的唯一词来比较它们,例如,list1 有“Regotun D - Gnoevoy R”这一行,list2 有“Dmitry Regotun (Ukr) - Roman Gnoevoy (Ukr)行)"很明显它们是不同的,您需要进行比较,例如,如果您从第一个列表中获取姓氏 Regotun 或 Gnoeva,并在列表中查找匹配项并将结果写入输出中它们相等。我写了这么奇怪的代码,方法很糟糕,并没有显示所有内容。请告知如何完成此任务。
List<string> list1 = new List<string>{"Реготун Д — Гноевой Р", "Клипперс — Денвер", "Хорнсби Ку Ринг Гай Спайдерс — Сидней Кометс"};
List<string> list2 = new List<string>{"Дмитрий Реготун (Укр) — Роман Гноевой (Укр)", "Лос-Анджелес Клипперс — Денвер Наггетс с ОТ", "Хорнсби — Сидней Кометс с ОТ", "Реготун Д — Гноевой Р"};
string result = "";
foreach(var list1Res in list1)
{
string[] Contains = list1Res.Split('—');
Console.WriteLine(Contains[0]);
foreach(var list2Res in list2)
{
if(list2Res.Contains(Contains[0]))
{
Console.WriteLine(list1Res + " list1 равен list2");
}
}
}
随意将代码分解为方法。分别分离原始子任务。然后写代码会更容易,读起来也会更容易。
这个问题可以简化为重合词。由于第一个名字在哪里,姓在哪里并不清楚,我们可以简单地假设如果左边的单词包含在第二对的左边,并且同时第右侧包含在第二对的右侧。然后通过添加这个词必须至少有4个字符长的过滤条件,就可以得到想要的结果。
控制台输出
也就是说,列表 2 的所有元素都包含在列表 1 中。