Member 12706516 Ответов: 1

Как добавить значение из хэш-таблицы в список строк? (С#)


У меня есть хэш-таблица, содержащая мои tcpUsers, и я хочу вывести ее в строковый список как простой способ управления текущими подключенными пользователями. Как бы я это сделал? Есть еще какой-нибудь более простой способ?

Что я уже пробовал:

Я не знаю, с чего начать, но я хочу просто добавить значение в список, может быть, в следующий доступный индекс?

Philippe Mori

Если у вас есть хэш-таблица, то это, вероятно, было сделано с целью повышения производительности для поддержки большого количества пользователей с минимальными накладными расходами. Поэтому, вероятно, нет особого смысла использовать вместо этого список. Вероятно, вы не можете просто добавить пользователя в конце, так как вам, вероятно, придется убедиться, что пользователь еще не находится в таблице. И вам не нужен список, чтобы перебирать существующие значения. Кроме того, где ваш код?

Ramza360

Если вы пытаетесь отобразить данные пользователю, просто приведите хэш-таблицу с помощью оператора LINQ и установите свойство источника данных. На самом деле, используя этот метод, вы можете позволить привилегированному пользователю редактировать значение, которое при редактировании отправки вы должны обновить запись хэш-таблицы.

1 Ответов

Рейтинг:
0

Ramza360

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

Пример для отображения:

class Person {
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public int Age { get; set; }
     public bool Current { get; set; }
}

HashTable table = new HashTable();
table["4874"] = new Person() {
   FirstName = "Berny",
   LastName = "Sanders",
   Age = 65,
   Current = true
};

table["6451"] = new Person() {
   FirstName = "Michelle",
   LastName = "Obama",
   Age = 50,
   Current = false
};

// The below assumes your using a data grid view with four columns, having the DataPropertyNames set to the same name as the Column name. If they are different, a new column will be added for each DataPropertyName not set.
dataGridView1.DataSource = table.Cast<DictionaryEntry>().Select(x => new {
    Column1_FirstName = ((Person)x.Value).FirstName,
    Column2_LastName = ((Person)x.Value).LastName,
    Column3_Age = ((Person)x.Value).Age,
    Column4_Current = ((Person)x.Value).Current
}).Reverse().ToList();

OUTPUT::

FirstName | LastName | Age | Current
Berny     | Sanders  | 65  |  True
Michelle  |  Obama   | 50  |  False

Note the use of Reverse().  Calling ToList() on a cast of the Hashtable will read from bottom up, so to keep the order (though the order is not guaranteed), call reverse().