2010-03-05 33 views
5

Chúng tôi đang xây dựng động một số câu lệnh SQL và chúng tôi đang sử dụng toán tử IN. Nếu giá trị của chúng tôi là một tập hợp các giá trị như vậy mà:Kiểm tra xem đối tượng có phải là bộ sưu tập chung chung không

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

Tôi muốn để có thể cung cấp dịch vụ 'guids' để builder khoản của tôi, có nó kiểm tra kiểu và nếu nó là đếm được tạo ra một điều khoản như:

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

Kiểm tra rằng giá trị là IEnumerable như thế này:

if (value is IEnumerable) 

rơi xuống khi một chuỗi được thông qua tại (mà xảy ra khá thường xuyên :)). Cách tốt nhất để xác nhận loại tình trạng này là gì?

+1

Vui lòng không xây dựng sql của riêng bạn. Hoặc là LINQ (mà tôi KHÔNG phải là người hâm mộ) hoặc sử dụng một cơ chế khác. Không chỉ khó gỡ lỗi, khó duy trì mà không triển khai lại ứng dụng cho các thay đổi truy vấn nhỏ, nhưng lúc nào cũng có các vấn đề về tiêm sql cần được xử lý. – NotMe

+0

Không phải tùy chọn. : | Tôi tin rằng tôi sẽ sử dụng Linq trong một nhịp tim. –

Trả lời

7

Làm thế nào về:

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

Bạn có thể thử value.GetType().IsGenericType kết hợp với kiểm tra của bạn cho IEnumerable.

+0

Anh ấy đánh bại bạn một phút :) –

2

gì về:

value is IEnumerable<Guid> 

Sẽ tốt hơn nếu bạn mong đợi hợp Guid, phải không?

Các vấn đề liên quan