Get all string properties from an object that have multiple object inside

I have an object that have multiple object inside and properties , i want to get all the values of string type of all the object inside it until the last depth , i’m not too familiar with linq and reflection principal , that what i achieved so far

    public void Recherche()
        _viewListeVente.Filter = new Predicate<object>(Contain);
    public bool Contain(object de)
        SalesCounter item = de as SalesCounter;
        return de.GetType().GetProperties()
.Where(pi => pi.PropertyType==typeof(string))
.Select(pi => (string)pi.GetValue(de))
.Any(value => value.Contains(rechercheProduitText));


and that’s an example of a model i’m using

public class SalesCounter
    public Client client { get; set; }
    public string price { get; set; }
    public string reference { get; set; }
    public string date { get; set; }
    public int discount { get; set; }
    public string discountType { get; set; }
    public Item[] items { get; set; }
    public int amount { get; set; }

    public string _id { get; set; }

I know that i can return all object of type class, but those objects also have objects inside so i’m searching a generic way to get all the way inside and get all strings

.NET Foundation Website | Blog | Projects | Code of Conduct