C# 有没有办法使用SelectMany作为字典

C# 有没有办法使用SelectMany作为字典,c#,C#,我目前正在查询字典,如下所示 foreach (var instance in Dict) { X += $"(Description = '{instance.Key}') OR "; } 我可以使用SelectMany并准备字符串X。我还需要删除最后一个或 Dict.SelectMany(p=>p.Key.....) 只需使用字符串。加入并选择 var result = string.Join(" OR ",dict.Keys.Select(x=> $"Descrip

我目前正在查询字典,如下所示

foreach (var instance in Dict)
{
   X += $"(Description = '{instance.Key}') OR ";
}
我可以使用
SelectMany
并准备字符串
X
。我还需要删除最后一个

Dict.SelectMany(p=>p.Key.....) 

只需使用
字符串。加入
并选择

var result = string.Join(" OR ",dict.Keys.Select(x=> $"Description = '{x}'"));


其他资源

获取包含
字典中键的集合

连接指定数组的元素或 集合,在每个元素或元素之间使用指定的分隔符 成员

将序列中的每个元素投影到新形式中


mjwills提出了一个有趣的问题。如果这是SQL,则可以简单地执行以下操作:

var sql = "description IN ('" + string.Join("','". dict.Keys) + ")";
但最好是这样做:

var sql = new SqlCommand(",,, description IN ('", connstr);
var p = 0;
foreach(string k in dict.Keys){
  sql.CommandText += $"@p{p},";
  sql.Parameters.AddWithValue($"@p{p++},", k);
}
sql.CommandText = sql.CommandText.TrimEnd(',') + ")";
有一些原因可以避免使用AddWithValue(谷歌的“我们可以停止使用AddWithValue了吗?”),但这展示了一种通用技术——我们将参数名称动态连接到sql,然后将这些参数添加到集合中。这应该总是优于简单的字符串连接


其他将值数组传递到数据库的方法也存在,具体取决于数据库供应商-如果您使用的是sqlserver,您可以查看表值参数,例如

如果您可以提供一个基于这些示例输入的示例输入和预期输出,那将非常棒。如果不是动态SQL,您将生成什么?我问,因为这感觉像一个XY问题-。