Is there a more readable way to write this add to a list only if the element not exists? (perfectionistic)
I don't think it is necessary to create a method; the code seems atomic enough (SRP).

But I would refactor the code to make it clearer, and to avoid enumerating the categories twice:

foreach (var summaryOdd in odds)
{
    string eventId = summaryOdd.Championship;
    var category = categories.FirstOrDefault(cat =&gt; cat.Name == eventId);
    if(category == null)
    {
        category = new PlacedCategory
        {
            Name = eventId,
        };
        categories.Add(category);
    }
}