c # как добавить элемент в массив - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть цикл, который генерирует около 150 уникальных строк.Как я могу добавить эти строки в массив?Вот мой цикл:

for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    Console.WriteLine(releaseUri);
}

Console.WriteLine (releaseUri) печатает каждый URL.но я хотел бы сохранить releaseUri в массиве.

Ответы [ 6 ]

0 голосов
/ 05 февраля 2019

Один из простых способов сделать это - создать шаблон Uri, который содержит заполнители для имени и даты проекта (используя {0} и {1} в строке), а затем с некоторыми Linq методами расширения (Select).и ToList) и string.Format, вы можете и генерировать свои строки из Enumerable.Range:

// Project name and date will be inserted where {0} and {1} are below
string uriTemplate = "http://tfs1:8080/tfs/defaultcollection/{0}/_apis/release/" +
    "releases?api-version=3.0-preview.2&searchText=911&minCreatedTime={1}T00:00:00.00Z";

string[] releaseUris = Enumerable.Range(0, projectCount)
    .Select(i => string.Format(uriTemplate, project.value[i], date))
    .ToArray();
0 голосов
/ 05 февраля 2019

@ ShaneP,

Вам необходимо объявить массив вне цикла for следующим образом.

string[] releaseUriArray = new string[projectCount];

for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    // Here you are adding the releaseUri strings to the releaseUriArray
    releaseUriArray[intCounter] = releaseUri;

} 

// print your uris from the array here
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var releaseUri = releaseUriArray[intCounter];
    Console.WriteLine(releaseUri);
} 
0 голосов
/ 05 февраля 2019

Списки обычно лучше, чем массивы.

    var releaseUris = new List<string>();
    foreach(var project in projects)
    {
        var releaseUri = $"http://tfs1:8080/tfs/defaultcollection/" + project.projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + project.date + "T00:00:00.00Z";
        releaseUris.Add(releaseUri);
    }
0 голосов
/ 05 февраля 2019

Список будет лучше, потому что вы точно не знаете, сколько предметов вы будете обрабатывать.Это будет выглядеть примерно так List<String> myList = new List<String>(); Тогда просто myList.Add(releaseURi);

0 голосов
/ 05 февраля 2019

Если вы сейчас projectCount, то вы можете создать массив с необходимыми номерами элементов и просто установить его элементы по индексу.

var urls = new string[projectCount];
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    urls[i] = releaseUri;
}

Или вы можете просто использовать динамический массив и добавлять элементы, используя метод Add(), чтобы иметь возможность изменять размер массива после инициализации.

var urls = new List<string>();
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    urls.Add(releaseUri);
}

Также вам не нужно использовать циклы, и вы можете решить вашу проблему с помощью всего 1 строки кода, используя LINQ :

var urls = project
              .value
              .Select(p => "http://tfs1:8080/tfs/defaultcollection/" + p.projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z")
              .ToArray();
0 голосов
/ 05 февраля 2019

В этом случае вы можете использовать массив, поскольку вы знаете количество элементов.Инициализируйте его и установите элементы по ходу движения

var arr = new string[projectCount];
for (int intCounter = 0; intCounter < projectCount; intCounter ++)
{
    var projectname = project.value[intCounter].name;
    var releaseUri = "http://tfs1:8080/tfs/defaultcollection/" + projectname + "/_apis/release/releases?api-version=3.0-preview.2&searchText=911&minCreatedTime=" + date + "T00:00:00.00Z";
    Console.WriteLine(releaseUri);
    arr[intCounter] = releaseUri;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...