2010-03-05 5 views
5

Nous construisons dynamiquement des instructions SQL et nous utilisons l'opérateur IN. Si notre valeur est une collection de valeurs telles que:Vérifiez si un objet est une collection générique

List<Guid> guids = new List<Guid>() 

Je veux être en mesure de fournisseur « GUIDs » à mon constructeur de l'article, faites vérifier le type et si elle est dénombrable créer une clause comme:

IN ({Guid1}, {Guid2}, {Guid3}) 

Vérification que la valeur est IEnumerable comme ceci:

if (value is IEnumerable) 

tombe lorsqu'une chaîne est passée dans (ce qui arrive assez régulièrement :)). Quelle est la meilleure façon de valider ce type de condition?

+1

Veuillez ne pas créer votre propre SQL. Soit allez LINQ (dont je ne suis pas fan) ou utilisez un autre mécanisme. Non seulement il est difficile de déboguer, mais il est difficile à maintenir sans redéployer l'application pour des modifications mineures de requêtes, mais il y a toujours des problèmes d'injection SQL qui doivent être résolus. – NotMe

+0

Pas une option. : | Croyez-moi, j'utiliserais Linq dans un battement de coeur. –

Répondre

7

Que diriez-vous:

if(value .GetType().IsGenericType && value is IEnumerable) 
5

Vous pouvez essayer value.GetType().IsGenericType en combinaison avec votre chèque de IEnumerable.

+0

Il vous a battu d'une minute :) –

2

Qu'en est-:

value is IEnumerable<Guid> 

Il est préférable si vous vous attendez cas Guid, est-ce pas?

Questions connexes