У меня есть строка запроса, и я заменяю X раз N. Количество раз.
У меня есть список объектов с именем строки и список свойств строки.
public class Tag
{
public string name;
public List<string> value;
}
Строка - это простое предложение where оператора sql.По сути:
'Column1' = '[CustomValue1]' AND 'Column2' = '[CustomValue2]'
Мне нужно перебрать значения тегов и заменить CustomValues
на те значения, которые имеют мои теги.Проблема этой реализации в том, что она не динамическая.Этот код не будет работать, если есть еще одно предложение AND, например 'Column1' = '[CustomValue1]' AND 'Column2' = '[CustomValue2]' AND 'Column3' = '[CustomValue3]'
Мне нужно несколько раз заменить строку, потому что я получаю данные из таблицы и сохраняю их в моей переменной data
.
List<Tag> tagList = new List<Tag>();
Tag tag1 = new Tag()
{
name = "CustomValue1",
value = new List<string>() { "1", "2", "3", "4", "5", "6", "7" }
};
Tag tag2 = new Tag()
{
name = "CustomValue2",
value = new List<string>() { "8", "9", "10" }
};
tagList.Add(tag1);
tagList.Add(tag2);
List<string> customValue = new List<string>() { "CustomValue1", "CustomValue2" };
string str = "Column1' = '[CustomValue1]' and 'Column2' = '[CustomValue2]'";
Dictionary<string, List<string>> data = new Dictionary<string, List<string>>();
for(int i = 0; i < tagList[0].value.Count; i++)
{
string tempStr = str;
tempStr = str.Replace("[" + customValue[0] + "]", tagList[0].value[i]);
for (int k = 0; k < tagList[1].value.Count; k++)
{
var tempStr1 = tempStr.Replace("[" + customValue[1] + "]", tagList[1].value[k]);
// Merge is a extension method I made that appends the value of the keys from one dictionary to another.
// The dictionary will always have the same keys because I am querying in the same table.
data = data.Merge(QueryStatement(tempStr));
}
}
Как мне лучше оптимизировать этот код?Что я могу сделать, если в строке есть еще одно предложение AND?