Заменить строку X раз N количество раз - PullRequest
0 голосов
/ 11 мая 2018

У меня есть строка запроса, и я заменяю 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...