DataGrid - Filtering for nulls or any string doesn't update the table

I have a DataGrid which is bound to a list of objects.
These contain objects that have a property CreatedDate
This is a date.
I want to filter "handled" (where date is not null) or "unhandled" where data is null

I added a filter template and created a drop down with these two values. The onchange event executes the following code.

While the data property of the grid is correct (it shows only 1 result), the grid continues to display the old data (10 results)!

The on changehandler has the following code:

async Task OnSelectedStatusChanged(object value)
{


    IList<BookingDetailsWarning> filteredData = BookingDetailsWarnings.Where(b => b.ClearedDateTime == null).ToList(); //temp hardcoded
     dataGrid.Data = filteredData;
    await dataGrid.Reload();

     StateHasChanged();
}

Any ideas why this isn't updating?
Is there a better approach?

Usually this is not the way to update it - you can simply update the collection assigned to Data property.

So I updated my code to do this, which I didn't expect to work since the linq will produce a new object

async Task OnSelectedStatusChanged(object value)
{

    myColumn.SetFilterValue(new DateTime());
    dataGrid.Data.Where(b => b.ClearedDateTime == null).ToList();
    await dataGrid.Reload();

       StateHasChanged();
}

This resulted an "System.NullReferenceException: 'Object reference not set to an instance of an object.'" when executing callback. Invoke(state) in RunFromThreadPoolDispatchLoop class!

Have you tried to debug your application? What’s null?

The details of the exception are:

This exception was originally thrown at this call stack:
Microsoft.AspNetCore.SignalR.ClientProxyExtensions.SendAsync(Microsoft.AspNetCore.SignalR.IClientProxy, string, object, object, object, System.Threading.CancellationToken)
Microsoft.AspNetCore.Components.Server.Circuits.RemoteJSRuntime.EndInvokeDotNet(Microsoft.JSInterop.Infrastructure.DotNetInvocationInfo, Microsoft.JSInterop.Infrastructure.DotNetInvocationResult)
Microsoft.JSInterop.Infrastructure.DotNetDispatcher.EndInvokeDotNetAfterTask(System.Threading.Tasks.Task, Microsoft.JSInterop.JSRuntime, Microsoft.JSInterop.Infrastructure.DotNetInvocationInfo)
System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, object) in ExecutionContext.cs

This exception doesn't come from the OnSelectedStatusChanged event handler!

This is how every Blazor exception looks, if you need to know why this is raised you need to debug.

Sticking a breakpoint in the handler and stepping through, the code leaves the event handler and immediately just to this exception from RemoteJsRuntime!