Конструктор string с массива ответа

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Добрый день форумчане. Есть вопрос по конструктору строк типа
C#:
string answer = string.Join(Environment.NewLine, project.Variables["domain"].Value, значение1, значение2...,);
Для тестов юзаю скрипт (в конце поста образец) который собирает MX и TXT записи DNS со списка доменов. В ответах приходит неопределённое количество значений (если нет ответов вообще срабатывает блок catch ) и я на "коленке" не придумал ничего иного, как получать первое значение из ответа
C#:
List3.Add(domain + "|" + s[0]);
Это не есть гуд, поэтому пытаюсь понять как реализовать следующее - перебрать в цикле ответ и при помощи конструктора "запихать" все ответы в одну строку которую отправить на выход (для дальнейшей обработки). Ответы могут содержать как одно значение, так и несколько (про исключения написал выше) - подскажите куда посмотреть по решению этой задачи, чтобы можно было "собрать" в строку все ответы, а не только первый
Образец кучка "боевого" кода

C#:
try
        {
            project.Variables["domain"].Value = domain.ToString();           
            string[] s= DnsAPI.GetMXRecords(domain);
            project.SendInfoToLog(s[0], true);
            var Countdomain = List2.Count.ToString();
            project.Variables["Countdomain"].Value = Countdomain;
            project.SendInfoToLog("Осталось " + Countdomain + " адресов", true);
            lock(CommonCode.GoodBoxLocker)
                    {
                    List3.Add(domain + "|" + s[0]);       
                    }
        }
Спасибо.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 409
Баллы
113
Не совсем понял задачу, но, если нужно вытянуть в одну строку - вот пример.
Если возле каждого результата нужно подставить домен - второй пример.
C#:
string domain = "site.ru";
string[] lines = {"Один", "Два", "Три"};
return string.Join("|", new[]{domain, string.Join(Environment.NewLine, lines)});
Результат:
site.ru|Один
Два
Три
C#:
string domain = "site.ru";
string[] lines = {"Один", "Два", "Три"};

var list = lines.Select(x=> new[]{domain, x})
            .Where(y=>!string.IsNullOrEmpty(y[1]))
            .Select(z=> string.Join("|", z)).ToList<string>();
if(list.Count>0) {    // Больше 0 результатов
    return string.Join(Environment.NewLine,list);
}
else {
    return string.Empty; // Ничего нет
}
Результат 2:
site.ru|Один
site.ru|Два
site.ru|Три
 
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
Не совсем понял задачу, но, если нужно вытянуть в одну строку - вот пример.
Если возле каждого результата нужно подставить домен - второй пример.
C#:
string domain = "site.ru";
string[] lines = {"Один", "Два", "Три"};
return string.Join("|", new[]{domain, string.Join(Environment.NewLine, lines)});
Результат:
site.ru|Один
Два
Три
C#:
string domain = "site.ru";
string[] lines = {"Один", "Два", "Три"};

var list = lines.Select(x=> new[]{domain, x})
            .Where(y=>!string.IsNullOrEmpty(y[1]))
            .Select(z=> string.Join("|", z)).ToList<string>();
if(list.Count>0) {    // Больше 0 результатов
    return string.Join(Environment.NewLine,list);
}
else {
    return string.Empty; // Ничего нет
}
Результат 2:
site.ru|Один
site.ru|Два
site.ru|Три
Задача такова - в ответе приходит несколько строк , это список MX записей сайта. Их нужно собрать в строку и добавить к домену.

На выходе ожидаю от программы строку типа - domain | mx.domain.com, mx2.domain.com (после вертикального слэша перечисление записей MX через запятую)
Сейчас поиграюсь с Вашим кодом, спасибо
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
631
Благодарностей
543
Баллы
93
C#:
string domain = "site.ru";
string[] lines = {"mx1.domain.com", "mx2.domain.com", "mx3.domain.com"};
return domain + " | "  + string.Join(", ", lines);
site.ru | mx1.domain.com, mx2.domain.com, mx3.domain.com
 
Последнее редактирование:
  • Спасибо
Реакции: DevOps

DevOps

Client
Регистрация
30.11.2020
Сообщения
496
Благодарностей
314
Баллы
63
  • Спасибо
Реакции: Ilshakin

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)