using System.Collections.Generic;
public static void Main()
string inputcsv = @"Id,Field1,Field2,Country,Field3
1,one,two,Australia,three
2,one,two,New Zealand,three
3,one,two,Indonesia,three
string masterCsv = @"Field1,Country,Field2
bool csvHasHeader = true;
int countryIndexInMaster = 1;
List<string> countries = new List<string>();
using (var masterReader = new System.IO.StringReader(masterCsv))
line = masterReader.ReadLine();
countryIndexInMaster = line.Split(delimiter).ToList().FindIndex(x => x.Trim('"').Equals("Country", StringComparison.OrdinalIgnoreCase));
while ((line = masterReader.ReadLine()) != null)
string country = line.Split(delimiter)[countryIndexInMaster].Trim('"');
if (!countries.Contains(country))
int countryIndexInInput = 3;
var outputStringBuilder = new System.Text.StringBuilder();
using (var outputWriter = new System.IO.StringWriter(outputStringBuilder))
using (var inputReader = new System.IO.StringReader(inputcsv))
line = inputReader.ReadLine();
countryIndexInInput = line.Split(delimiter).ToList().FindIndex(x => x.Trim('"').Equals("Country", StringComparison.OrdinalIgnoreCase));
outputWriter.WriteLine(line);
while ((line = inputReader.ReadLine()) != null)
string country = line.Split(delimiter)[countryIndexInInput].Trim('"');
if(!countries.Contains(country))
outputWriter.WriteLine(line);
errorCsv = outputWriter.ToString();
Console.WriteLine(errorCsv);