Как я могу прочитать строковое значение и сохранить его в массиве с помощью чтения данных - PullRequest
3 голосов
/ 02 ноября 2011

Я читаю некоторый список значений в результате, но я не уверен, где я ошибаюсь, я не знаю размер массива, поэтому я не могу присвоить ему какое-либо значение

string[] result = null;
while (reader.Read())
{
    result = Convert.ToString[](reader["RoleID"]);
}
reader.Close();

Я получаю: Syntax error; value expected.

После того, как я получу значение результата, как я могу сравнить значения внутри результата со строкой? Например, я хочу проверить, присутствует ли строка check="Can send message"; в массиве результатов или нет. Как я могу это сделать?

Ответы [ 4 ]

3 голосов
/ 02 ноября 2011

Ваш код синтаксически неверен, следовательно, ошибка.Но когда вам нужно создать коллекцию элементов, но вы не знаете заранее размер, вы хотите использовать List<T> вместо массива.Список позволит вам продолжать добавлять элементы.

var results = new List<string>();
while (reader.Read())
{
    results.Add(reader["RoleID"].ToString());
}

// results now holds all of the RoleID values in the reader 

Вы можете получить доступ к элементам списка через индекс, как в массиве, и можете запросить список с помощью Linq (также как в массиве), еслинеобходимо.

string check = "something";
if (results.Any(item => item.Equals(check)))
{
    // results contains the value in check 
}

// or use all items that equal check
foreach (var item in results.Where(obj => obj.Equals(check))
{
    // do something with each item that equals check
}
1 голос
/ 02 ноября 2011

Я предпочитаю использовать ArrayList

var result= new ArrayList();
while (reader.Read())
        {
            result.Add(Convert.ToString[](reader["RoleID"]));
        }reader.Close();
0 голосов
/ 12 августа 2014

Список в примере с Энтони Пеграмом может быть легко преобразован в массив при необходимости.

string[] result = results.ToArray();
0 голосов
/ 02 ноября 2011

Вы должны использовать список следующим образом:

var results = new List<string>();
while( reader.Read() ){
    results.Add(reader["RoleID"].ToString());
}

Затем вы перебираете все строки в коллекции и проверяете их с помощью оператора foreach:

foreach(var result in results) {
    if(result == "check") {
        // do something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...