In both cases I'm manually setting the TItem attribute to Global.Models.Database.Entity, which is in a class inside the same project. Each column also inherits the TItem property as it should:
I recommend applying the filter when setting the property. Use a Linq expression for a component property will make it evaluate on every StateHasChanged and always rebind the grid. So the solution is to create a page property which has the filter applied e.g.
set the filteredPeople to o ${people.Where(p => some expression)}