GraphQLResponse<Data> filt = apiListData; var tmp = new List<List>(); foreach (var list in apiListData.Data.MediaListCollection.lists) { tmp.Add(list); } foreach (var List in tmp) { foreach (var listEntry in List.entries) { listEntry.CustomListsList = new ObservableCollection<customListItem>(); if (listEntry.CustomLists != null) { foreach (var VARIABLE in listEntry.CustomLists) { listEntry.CustomListsList.Add( new customListItem { key = VARIABLE.Key, value = VARIABLE.Value } ); } } } } var filtered = tmp; foreach (var x in filtered) { x.entries = x.entries.Where(x => x.media.Title.UserPreferred.ToLowerInvariant().Contains(query.ToLowerInvariant())) .ToList(); } Console.WriteLine(filtered);