У меня есть два файлаC# сравнения двух строк массивов
"Database.txt" содержит следующие имена:
- Собака
- Cat
- Mouse
- Panda
- Bear
"slave.txt" содержит следующие имена:
Cat
Panda
Я хочу, чтобы сравнить "slave.txt" с "Database.txt" и создать третий файл с:
2. Cat 4. Panda
(Котик и Panda от slave.txt найти в Database.txt)
Мой код:
static void Main(string[] args)
{
String directory = @"C:\Users\user\Desktop\";
String[] linesA = File.ReadAllLines(Path.Combine(directory, "Database.txt"));
String[] linesB = File.ReadAllLines(Path.Combine(directory, "Slave.txt"));
IEnumerable<String> onlyB = linesB.Intersect(linesA);
File.WriteAllLines(Path.Combine(directory, "Result.txt"), onlyB);
}
работает только на Database.txt структуры, как:
Собака
Cat
Mouse
Panda
Медведь
без номеров строк. Есть ли что-то вместо .Intersect, чтобы найти только часть строки, а не полную строку?
Вы хотите совместить также и "12. Blue Panda" с "Panda"? –
Просто напишите цикл. Или, если вы действительно хотите использовать linq, '.Where (predicate func)' – ryanyuyu
В качестве второго параметра функция .intersect позволяет вам вставлять клиентский выравниватель, по которому вы можете решить, как сравнивать ваши объекты.Используя этот сопоставитель равенства, вы можете сделать equasion на string.contains (otherString), например. Или еще проще: используйте предложение Jasonw – Trickzter