2010-03-05 10 views
5

Dynamicznie budujemy pewne instrukcje SQL i korzystamy z operatora IN. Jeśli nasza wartość jest zbiorem wartości takie, że:Sprawdź, czy obiekt jest kolekcją ogólną.

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

Chcę móc dostawcy „GUID” to moim klauzuli budowniczy, mają to sprawdzić typ i jeśli jest przeliczalny stworzyć klauzulę jak:

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

Sprawdzanie, że wartość jest IEnumerable tak:

if (value is IEnumerable) 

spada, gdy łańcuch jest przekazywany w (co zdarza się dość regularnie :)). Jaki jest najlepszy sposób na sprawdzenie tego typu stanu?

+1

Proszę nie budować własnego sql. Wybierz LINQ (którego NIE jestem fanem) lub użyj innego mechanizmu. Nie tylko jest trudne do debugowania, trudne do utrzymania bez ponownego wdrażania aplikacji dla drobnych zmian w zapytaniach, ale niezmiennie istnieją problemy z wtryskiem sql, które należy rozwiązać. – NotMe

+0

Brak opcji. : | Uwierz mi, że używałbym Linq w rytmie serca. –

Odpowiedz

7

Jak o:

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

Można spróbować value.GetType().IsGenericType w połączeniu z czekiem na IEnumerable.

+0

Pobił Cię przez chwilę :) –

2

Co o:

value is IEnumerable<Guid> 

Lepiej jeśli można oczekiwać wystąpienia GUID nie jest?

Powiązane problemy