using System.Collections.Generic;
using System.Globalization;
public static void Main()
var configFilePath = "monsters.csv";
File.WriteAllLines(configFilePath, new []
"Gender,Age,Type,Result",
var monsterLookup = new MonsterLookup(configFilePath);
var myMonster = new Monster { Gender = "Male", Age = "Old", Type = "Ice" };
var result = monsterLookup.GetResult(myMonster);
Console.WriteLine("Result: " + result);
public class MonsterLookup
private readonly List<Monster> _lookupList;
public MonsterLookup(string configFilePath)
using var reader = new StreamReader(configFilePath);
using var csv = new CsvReader(reader, CultureInfo.InvariantCulture);
_lookupList = csv.GetRecords<Monster>().ToList();
public int GetResult(Monster monster)
var match = _lookupList.FirstOrDefault(
m => m.Gender == monster.Gender
&& m.Type == monster.Type);
return match?.Result ?? -1;
public string Gender { get; set; }
public string Age { get; set; }
public string Type { get; set; }
public int Result { get; set; }