繁体   English   中英

C#如何在where条件下建立动态查询

[英]c# how to build a dynamic query in the where condition

这是我的查询

SELECT COUNT(MPRO.OriDes0154) 'QueueCalls' FROM MMProdat.dbo.InstTaWf0154 MPRO WITH(NOLOCK) 
WHERE MPRO.Estado0154 = 'QUEUED' 
AND F1IdWI02140154<>'VOICEMAIL'
AND F1Camp02930154 = 'Support'

请注意,我有AND F1Camp02930154 = 'Support'

现在我有一个像这样的列表:

List<string> compaines = new List<string>();

此列表中的值应在此条件中且AND F1Camp02930154 = 'Support'

例如,如果列表为空,我将得到一个空结果,但是如果列表只有一个值,即Support则查询为

AND F1Camp02930154 = 'Support'

但是如果列表中有两个值,即Support and Sales则查询将是

AND F1Camp02930154 = 'Support' and `Sales`

如何在C#中做到这一点

我已经有这个了:

string queryString = "SELECT COUNT(MPRO.OriDes0154) 'QueueCalls' FROM MMProdat.dbo.InstTaWf0154 MPRO WITH(NOLOCK) WHERE MPRO.Estado0154 = 'QUEUED' AND F1IdWI02140154<>'VOICEMAIL'";

更新1

@ Gordon Linoff发表评论后

我尝试了这个:

List<string> compaines = new List<string>();
            string queryString = "SELECT COUNT(MPRO.OriDes0154) 'QueueCalls' FROM MMProdat.dbo.InstTaWf0154 MPRO WITH(NOLOCK) WHERE MPRO.Estado0154 = 'QUEUED' AND F1IdWI02140154<>'VOICEMAIL' AND F1Camp02930154 IN (";
            for (int i = 0; i < compaines.Count(); i++) {
                queryString += "'" + compaines[i] + "'";
            }
            queryString += ")";

您可以使用String.Join()构造IN ()子句,例如:

var companies = new List<string>() { "Support", "Sales" };
string inClause = String.Format(" IN ('{0}')", String.Join("', '", companies));
Console.WriteLine("AND F1Camp02930154" + inClause);
//output :
//AND F1Camp02930154 IN ('Support', 'Sales')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM