You have to implement certains interfaces (IQueryable for example) over your custom class in order to use Linq to query over them. Also, if you have a collection composing your class, then you can expose its Enumerator in order to gain in this terrain (Implement IEnumerable).
See:
How to implement IQueryable
If you need a much specialized "Linq" functionality, like the one that is used in Linq to SQL to translate a Linq expression to T-SQL, then Linq is like a standard: Diferent set of technologies implement Linq diferently, but with certain guidelines. That is correct for Linq to XML, Linq to Entities, Linq to SQL, etc.
See:
Walkthrough: Creating an IQueryable LINQ Provider