})>OrderByDescending(x=>x.Id).ToList();
That should be a ., not a >
The only reason to call ToList is to ensure that the query runs before it goes stale. There's no reason for that not to work that I can see. Might using a dynamic be the issue? What if you create a class to use?
Otherwise, just use foreach to make your own list and at a minimum, start to filter down what the issue is