【问题标题】:Dynamically add parameter to a 'IN' clause in a query?动态地将参数添加到查询中的“IN”子句?
【发布时间】:2012-04-06 12:37:29
【问题描述】:

我正在尝试使用C# 查询MS Access DB

静态查询是 -

Select FieldID , CDGroups.CDGroupID , Priority
from Fields , CDGroups
where Fields.CDGroupID = CDGroups.CDGroupID
  and Fields.FieldID in ('f1','f2','f3')
order by Priority

我需要从包含所有这些字段的fieldIdList(List<string> fieldIdList) 中替换 f1,f2.. FieldID

我该怎么办?

【问题讨论】:

  • 你用什么语言编程,实体框架之类的,你用的是LINQ吗?
  • 我正在将 c# 应用程序与访问数据库连接,不,我没有使用 LINQ。
  • 你仍然需要展示一些代码,否则你能期望的最好的就是“好吧,那就做吧”
  • 你想得到什么?具有“f1”、“f2”和“f3”的 CDGroupID 列表?
  • @Devart 的 CDGroupID 列表以及相应的字段

标签: sql ms-access


【解决方案1】:

正确的方法是使用 SQL 参数。
为此,您需要遍历列表并为每个列表项创建一个参数 - 在 SQL 字符串中在查询的 SQL 参数列表中。

查看类似问题的答案:
How to pass sqlparameter to IN()?

【讨论】:

    【解决方案2】:
     var listId= string.Join(",", fieldIdList.Select(m => string.Format("'{0}'", m)));;
    

    然后

    "Field.FieldID in (" + listId+ ")
    

    【讨论】:

      【解决方案3】:

      我使用了以下代码:

       StringBuilder sb = new StringBuilder();
      
                      foreach (string fieldId in fieldIdList)
                      {
                          sb.Append("'" + fieldId + "',");
                      }
      
                      string fieldList = sb.ToString().TrimEnd(',');
      
                      string queryString =
                          "Select FieldID , CDGroups.CDGroupID , Priority from Fields , CDGroups where Fields.CDGroupID = CDGroups.CDGroupID and Fields.FieldID in (" + fieldList + ") order by Priority";
      

      【讨论】:

        【解决方案4】:

        试试这个查询 -

        SELECT CDGroupID FROM fields
          WHERE FieldID IN ('f1', 'f2', 'f3')
          GROUP BY CDGroupID
          HAVING(COUNT(DISTINCT FieldID)) >= 3
        

        它将显示至少具有“f1”、“f2”和“f3”的 CDGroupID 列表。如果您想显示只有 'f1'、'f2' 和 'f3' 的那些,则将 WHERE 条件更改为 'HAVING(COUNT(DISTINCT FieldID)) >= 3'。

        【讨论】:

          猜你喜欢
          • 2011-05-21
          • 1970-01-01
          • 2021-02-05
          • 2018-03-08
          • 1970-01-01
          • 2010-09-15
          • 2010-12-17
          • 2019-12-30
          • 2014-02-24
          相关资源
          最近更新 更多