【问题标题】:Check if an object is a generic collection检查对象是否为泛型集合
【发布时间】:2011-01-24 04:33:41
【问题描述】:

我们正在动态构建一些 SQL 语句,并且我们正在使用 IN 运算符。如果我们的值是这样的值的集合:

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

我希望能够向我的子句生成器提供“指导”,让它验证类型,如果它是可枚举的,则创建一个子句,如:

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

像这样检查值是否为 IEnumerable:

if (value is IEnumerable)

在传入字符串时会掉下来(这种情况经常发生:))。验证这种情况的最佳方法是什么?

【问题讨论】:

  • 请不要自己构建sql。要么使用 LINQ(我不喜欢它),要么使用其他机制。如果不重新部署应用程序以进行微小的查询更改,不仅难以调试、难以维护,而且总是存在需要处理的 sql 注入问题。
  • 不是一个选项。 :|相信我,我会在心跳中使用 Linq。

标签: c# collections type-equivalence


【解决方案1】:

怎么样:

value is IEnumerable<Guid>

如果您期望 Guid 实例会更好,不是吗?

【讨论】:

    【解决方案2】:

    您可以尝试将value.GetType().IsGenericType 与您对 IEnumerable 的检查结合使用。

    【讨论】:

      【解决方案3】:

      怎么样:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多