Possible de convertir IQueryable en IQueryable ?

Je connais la covariance et je sais qu’en général, cela ne sera pas possible en C # avant la v4.0.

Cependant, je m’interroge sur un cas particulier. Existe-t-il un moyen de convertir IQueryable en IQueryable en créant en quelque sorte une classe wrapper qui n’effectue pas réellement une requête, mais peut réellement “passer” par un .Where() ?

Mon cas d’utilisation est que j’essaie de traiter un schéma de firebase database comportant de nombreuses tables similaires. La plupart des champs sont en commun et de nombreux champs doivent être interrogés sur chaque table. J’utilise LinqToSql. J’espérais éviter de dupliquer toutes les requêtes pour chaque table.

Ce qui suit est ce que vous recherchez?

 var results = queryable.OfType.Where(...); 

La méthode OfType collecte tout ce qui est du type spécifié. Si tous les éléments de la collection sont de type Base ou dérivés du type base, ils doivent être qualifiés. Par la suite, tous les éléments seraient de type Base.

Ce qui suit fonctionnera également, même s’il est moins joli:

 var results = queryable.Select(derived => (Base)derived).Where(...);